text
項目一覧
定義
text
演算子は、インデックス構成で指定されるアナライザを使用して全文検索を実行します。アナライザを省略すると、text
演算子はデフォルトの標準アナライザを使用します。
構文
text
の構文は次のとおりです。
{ $search: { "index": <index name>, // optional, defaults to "default" "text": { "query": "<search-string>", "path": "<field-to-search>", "fuzzy": <options>, "matchCriteria": "any" | "all" "score": <options>, "synonyms": "<synonyms-mapping-name>" } } }
フィールド
フィールド | タイプ | 説明 | 必要性 |
---|---|---|---|
query | 文字列または複数の文字列の配列 | 検索文字列(1 つまたは複数)。文字列に複数のタームがある場合、Atlas Search は文字列内の各タームの一致も個別に検索します。 | 必須 |
path | 文字列または複数の文字列の配列 | 検索するインデックス付きフィールド(1 つまたは複数)。ワイルドカード パスを指定して検索することもできます。詳細については、「パスの構築」を参照してください。 | 必須 |
fuzzy | ドキュメント | ファジー検索を有効にします。検索タームに類似する文字列を検索します。 fuzzy は synonyms と併用できません。 | 任意 |
fuzzy.maxEdits | integer | 任意 | |
fuzzy.prefixLength | integer | 結果内の各タームの先頭にあり、完全一致する必要がある文字数。デフォルト値は 0 です。 | 任意 |
fuzzy.maxExpansions | integer | 生成および検索するバリエーションの最大数。この制限はトークンごとに適用されます。デフォルト値は 50 です。 | 任意 |
matchCriteria | string | クエリ内の語句を照合するために使用する条件。値は次のいずれかになります。
省略した場合、デフォルトは | オプション、推奨 |
score | ドキュメント | 一致する検索語句の結果に割り当てられたスコア。スコアを変更するには、次のいずれかのオプションを使用します。
配列内の値をクエリする場合、Atlas Search は、クエリに一致した配列内の値の数に基づいて、一致結果のスコアを変更しません。配列内の一致の数に関係なく、スコアは単一の一致と同じになります。 | 任意 |
synonyms | string | シノニム(同意語)を使用してクエリを実行するために必要です。 インデックス定義内のシノニム(同意語)マッピングの定義名。値は空の文字列にできません。
シノニム(同意語)マッピングを使用するクエリを Atlas Search が実行するのにかかる時間は、シノニム ソース コレクション内のドキュメントの数とサイズによって異なります。ソースとなるシノニム ドキュメントの数が少ないほど、所要時間は短くなる可能性があります。 | 任意 |
例
このページの例では、sample_mflix
データベース内の movies
コレクションを使用します。サンプルデータセット をクラスターにロードしたら、動的マッピングを使用して Atlas Search インデックスを作成し、クラスターでサンプル クエリを実行します。また、以下のシノニムの例を試すには、「インデックス定義の例 」に示されているように、インデックスに synonyms
のマッピングコレクションを定義する必要があります。
基本的な例
Atlas Search の次の例では、surfer
というタームを見つけるために、text
演算子を使用して、movies
コレクションのtitle
フィールドを検索しています。
例
次のクエリは、title
フィールドで surfer
というタームを検索します。検索プロセスに含まれる $project ステージでは次のアクションが行われます。
すべてのフィールドを除外。例外:
title
次のフィールドを追加:
score
db.movies.aggregate([ { $search: { "text": { "path": "title", "query": "surfer" } } }, { $project: { "_id": 0, "title": 1, score: { $meta: "searchScore" } } } ])
{ "title" : "Soul Surfer", "score" : 4.518949508666992 } { "title" : "Little Surfer Girl", "score" : 3.8856077194213867 } { "title" : "Fantastic 4: Rise of the Silver Surfer", "score" : 2.489800453186035 }
ファジー一致の例
次のクエリは、text
演算子を使用して、movies
コレクション内の title
フィールドで query
フレーズ naw
yark
内の各タームの 1 文字以内のバリエーションを検索します。Atlas Search では、デフォルトの fuzzy
オプションを使用するか、maxExpansions
、prefixLength
、またはmaxEdits
フィールドを定義するかに応じて異なる結果が返されます。
次のタブをクリックすると、デフォルトおよび指定の各オプションを使用するサンプル クエリが表示されます。
例
次のクエリは、title
フィールドでフレーズ naw yark
を検索します。このクエリでは、次の fuzzy
デフォルトオプションが使用されます。
maxEdits
は、与えられたフレーズの各タームについて最大 2 文字までの違いを許容して、クエリをドキュメントに一致させることができます。maxExpansions
は、naw yark
内の各タームに対して最大 50 個の類似タームを考慮して一致を見つけます。prefixLength
は、無効になっています。
クエリには、出力を 10 の結果に制限する $limit ステージと、次の操作を行う $project ステージも含まれています。
すべてのフィールドを除外。例外:
title
次のフィールドを追加:
score
db.movies.aggregate([ { $search: { "text": { "path": "title", "query": "naw yark", "fuzzy": {} } } }, { $limit: 10 }, { $project: { "_id": 0, "title": 1, score: { $meta: "searchScore" } } } ])
{ "title" : "New York, New York", "score" : 3.6040148735046387 } { "title" : "New York", "score" : 3.323730945587158 } { "title" : "New York Stories", "score" : 2.8579015731811523 } { "title" : "New York Minute", "score" : 2.8579015731811523 } { "title" : "Synecdoche, New York", "score" : 2.8579015731811523 } { "title" : "New York Doll", "score" : 2.8579015731811523 } { "title" : "Little New York", "score" : 2.8579015731811523 } { "title" : "Escape from New York", "score" : 2.506596088409424 } { "title" : "Naked in New York", "score" : 2.506596088409424 } { "title" : "Autumn in New York", "score" : 2.506596088409424 }
例
次のクエリは、文字列 naw yark
内の各タームの 1 文字以内にあるタームを title
フィールドで検索します。このクエリは以下を使用します。
クエリをドキュメントに一致させるために、各タームに対して 1 文字だけの違いを許容することを示す
maxEdits
フィールド。クエリをドキュメントに一致させるために、
naw
の類似タームを最大 100 個まで、かつyark
の類似タームを最大 100 個まで考慮する必要があることを示すmaxExpansions
フィールド。
クエリには、出力を 10 の結果に制限する $limit ステージと、次の操作を行う $project ステージも含まれています。
すべてのフィールドを除外。例外:
title
次のフィールドを追加:
score
db.movies.aggregate([ { $search: { "text": { "path": "title", "query": "naw yark", "fuzzy": { "maxEdits": 1, "maxExpansions": 100, } } } }, { $limit: 10 }, { $project: { "_id": 0, "title": 1, score: { $meta: "searchScore" } } } ])
{ "title" : "New York, New York", "score" : 4.38106107711792 } { "title" : "New York", "score" : 4.040346145629883 } { "title" : "New York Stories", "score" : 3.4740817546844482 } { "title" : "New York Minute", "score" : 3.4740817546844482 } { "title" : "Synecdoche, New York", "score" : 3.4740817546844482 } { "title" : "New York Doll", "score" : 3.4740817546844482 } { "title" : "Little New York", "score" : 3.4740817546844482 } { "title" : "Escape from New York", "score" : 3.047032356262207 } { "title" : "Naked in New York", "score" : 3.047032356262207 } { "title" : "Autumn in New York", "score" : 3.047032356262207 }
例
次のクエリは、文字列 naw yark
内の各タームの 1 文字以内にあるタームを title
フィールドで検索します。このクエリは以下を使用します。
クエリをドキュメントに一致させるための文字の違いが 1 文字だけであることを示す
maxEdits
フィールド。prefixLength
フィールドは、文字列naw yark
内の各用語の最初の2文字が変更されないことを示し、クエリをドキュメントと一致させます。
クエリには、出力を 8 の結果に制限する $limit ステージと、次の操作を行う $project ステージも含まれています。
_id
とtitle
を除くすべてのフィールドを除外次のフィールドを追加:
score
db.movies.aggregate([ { $search: { "text": { "path": "title", "query": "naw yark", "fuzzy": { "maxEdits": 1, "prefixLength": 2, } } } }, { $limit: 8 }, { $project: { "_id": 1, "title": 1, score: { $meta: "searchScore" } } } ])
{ "_id" : ObjectId("573a1396f29313caabce5646", "title" : "The Longest Yard", "score" : 2.914206027984619 } { "_id" : ObjectId("573a13aff29313caabd31ed8", "title" : "The Longest Yard", "score" : 2.914206027984619 } { "_id" : ObjectId("573a13b7f29313caabd4ad8b", "title" : "Stomp the Yard", "score" : 2.914206027984619 } { "_id" : ObjectId("573a13eaf29313caabdcf410", "title" : "Naz & Maalik", "score" : 2.5460386276245117 } { "_id" : ObjectId("573a1393f29313caabcddbed", "title" : "La nao capitana", "score" : 2.1892051696777344 } { "_id" : ObjectId("573a1399f29313caabcee781", "title" : "Kabhi Haan Kabhi Naa", "score" : 1.9200985431671143 } { "_id" : ObjectId("573a13a2f29313caabd0b815", "title" : "Kaho Naa... Pyaar Hai", "score" : 1.9200985431671143 } { "_id" : ObjectId("573a13a7f29313caabd1b5c0", "title" : "Oysters at Nam Kee's", "score" : 1.9200985431671143 }
一致 all
次のクエリでは、text
演算子を使用して movies
コレクションの plot
フィールドで、クエリ文字列 automobile race
が含まれるすべての用語を検索します。
db.movies.aggregate([ { "$search": { "text": { "path": "plot", "query": "automobile race", "matchCriteria": "all" } } }, { "$limit": 20 }, { "$project": { "_id": 0, "plot": 1, "title": 1, "score": { "$meta": "searchScore" } } } ])
[ { plot: 'A young driver, Speed Racer, aspires to be champion of the racing world with the help of his family and his high-tech Mach 5 automobile.', title: 'Speed Racer', score: 6.122188568115234 }, { plot: 'A gorgeous young automobile fanatic--and front to the hottest unsigned band on the West coast--finds herself caught up in illegal drag-racing competitions organized by exotic car fanatics.', title: 'Redline', score: 5.497724533081055 }, { plot: 'When a popular daredevil proposes an automobile race across three continents, his arch rival vows to beat him, while an ambitious female reporter has her own plans for victory.', title: 'The Great Race', score: 5.282209396362305 } ]
Atlas Search では、場所を問わず plot
フィールドで automobile
と race
という用語を含むドキュメントが返されます。
シノニム(同意語)の例
次の例では、text
演算子を使用して、sample_mflix.movies
名前空間の plot
フィールドを検索します。Atlas Searchでは、シノニム(同意語)ソースコレクション(synonymous_terms
)内のマッピングタイプに基づき結果が返されます。このマッピングタイプは sample_mflix.movies
コレクションのインデックスのシノニムマッピング定義で指定されます。
any
equivalent
マッピングを使用した の一致
次のクエリは、plot
フィールドでフレーズ attire
を検索します。クエリは、コレクションのインデックスにある mySynonyms
という名前のシノニム(同意語)マッピングを使用して、dress
という単語のシノニムとして設定されている単語も検索します。
db.movies.aggregate([ { "$search": { "text": { "path": "plot", "query": "attire", "synonyms": "my_synonyms", "matchCriteria": "any" } } }, { "$limit": 5 }, { "$project": { "_id": 0, "plot": 1, "title": 1, "score": { "$meta": "searchScore" } } } ])
[ { plot: 'The Sanguiwon are responsible for the attire worn by royalty. Dol-Seok (Han Suk-Kyu) is the best master artisan in charge of royal attire. He views set rules as paramount to his job. ...', title: 'The Royal Tailor', score: 15.825017929077148 }, { plot: "During Christmas' holidays, the children of a village split in two gang to play a snowball war. But that half-tone war scattered some bitterness and make more difficult the mutual attirance...", title: 'La guerre des tuques', score: 11.863945007324219 }, { plot: 'The Dress is a tale filled with sex, violence, comedy and drama as it follows the life of a dress. Conceived under a cloud of frustration and despair, the dress serves as the hub in a great...', title: 'The Dress', score: 5.061710834503174 }, { plot: "Boardroom and dressing-room intrigues spill on to the field at the Australian Rules football club.", title: 'The Club', score: 3.991994857788086 }, { plot: 'Deserting soldier dresses as a woman to escape detection; liking the female role he goes to a dance with another soldier and is exposed.', title: 'The Triple Echo', score: 3.5169785022735596 } ]
Atlas Searchは、attire
、apparel
、dress
という用語を含むドキュメントを返します。これらの用語はすべて、シノニムのソースコレクション synonymous_terms
で equivalent
のシノニムになるように設定されているからです。つまり、これらの用語はすべて互いに同義語です。したがって、Atlas Search では、dress
と attire
の検索で類似ドキュメントが返されます。
any
explicit
マッピングを使用した の一致
次のクエリは、plot
フィールドでフレーズ boat
race
を検索します。コレクションのインデックスにある my_synonyms
というシノニムマッピングを使用して、boat
と race
という単語の同義語に設定されている単語も検索します。
db.movies.aggregate([ { "$search": { "text": { "path": "plot", "query": "boat race", "synonyms": "my_synonyms", "matchCriteria": "any" } } }, { "$limit": 10 }, { "$project": { "_id": 0, "plot": 1, "title": 1, "score": { "$meta": "searchScore" } } } ])
[ { plot: 'A man is picked up by a fishing boat, bullet-riddled and suffering from amnesia, before racing to elude assassins and regain his memory.', title: 'The Bourne Identity', score: 15.405073165893555 }, { plot: 'A few friends builds a sailing boat together. They plan trips and during the completion of the boat marriages crumble, new relations blossom and the boat burns. They rebuild it and the ...', title: 's/y Glèdjen', score: 13.40434741973877 }, { plot: 'Famous motor-racing champion Joe Greer returns to his hometown to compete in a local race. He discovers his younger brother has aspirations to become a racing champion and during the race ...', title: 'The Crowd Roars', score: 10.466073036193848 }, { plot: 'The claustrophobic world of a WWII German U-boat; boredom, filth, and sheer terror.', title: 'Das Boot', score: 10.304922103881836 }, { plot: 'Several survivors of a torpedoed ship find themselves in the same boat with one of the men who sunk it.', title: 'Lifeboat', score: 9.776729583740234 }, { plot: 'A fishing-boat crew takes on a dangerous commission to smuggle a group of illegal immigrants from China to Korea.', title: 'Haemoo', score: 9.532430648803711 }, { plot: 'A land baron tries to reconnect with his two daughters after his wife is seriously injured in a boating accident.', title: 'The Descendants', score: 9.300044059753418 }, { plot: 'A weekend boating party turns into a nightmare for a group of young Londoners when they stumble upon a terrifying secret hidden in the reeds.', title: 'The Reeds', score: 9.078716278076172 }, { plot: 'Documentary telling the true story of the sinking of the liner Laconia by a German U-boat in 1942 through the eyes of six survivors.', title: 'The Sinking of the Laconia', score: 9.078716278076172 }, { plot: 'Sabotage efforts damage an international air race.', title: 'Those Magnificent Men in Their Flying Machines or How I Flew from London to Paris in 25 hours 11 minutes', score: 8.983794212341309 } ]
Atlas Search では、boat
、vessel,
、または sail
、または race
、rally
、またはcontest
という用語を含むドキュメントが返されます。これは、boat
を vessel
と sail
の explicit
なシノニム(同意語)として設定し、race
を rally
と contest
の explicit
なシノニムとして設定したためです。Atlas Search では、vessel
と sail
、または rally
と contest
に対するクエリ結果は返されません。これらの単語は他の単語をシノニム(同意語)とみなすように設定されていないためです。
all
シノニムを使用した の一致
次のクエリでは、text
演算子を使用して、movies
コレクションの plot
フィールドでクエリ文字列 automobile race
内のすべての用語を検索します。
Atlas Searchでは、シノニム(同意語)ソースコレクション synonymous_terms
内のマッピングタイプ に基づき結果が返されます。このマッピングタイプは、sample_mflix.movies
コレクションのインデックスのシノニムマッピング定義で指定されます。
db.movies.aggregate([ { "$search": { "text": { "path": "plot", "query": "automobile race", "matchCriteria": "all", "synonyms": "my_synonyms" } } }, { "$limit": 20 }, { "$project": { "_id": 0, "plot": 1, "title": 1, "score": { "$meta": "searchScore" } } } ])
[ { plot: 'A young driver, Speed Racer, aspires to be champion of the racing world with the help of his family and his high-tech Mach 5 automobile.', title: 'Speed Racer', score: 17.354578018188477 }, { plot: 'A gorgeous young automobile fanatic--and front to the hottest unsigned band on the West coast--finds herself caught up in illegal drag-racing competitions organized by exotic car fanatics.', title: 'Redline', score: 16.085742950439453 }, { plot: 'When a popular daredevil proposes an automobile race across three continents, his arch rival vows to beat him, while an ambitious female reporter has her own plans for victory.', title: 'The Great Race', score: 15.087226867675781 }, { plot: 'A race car driver becomes a champion with a Volkswagen Beetle with a mind of its own.', title: 'The Love Bug', score: 5.1777167320251465 }, { plot: 'A wide variety of eccentric competitors participate in a wild and illegal cross-country car race.', title: 'The Cannonball Run', score: 5.041530609130859 }, { plot: 'The original characters from the first Cannonball movie race across the country once more in various cars and trucks.', title: 'Cannonball Run II', score: 4.67281436920166 }, { plot: 'After a tied 1st place in a local stunt race, two drivers start a contest to decide who of them will own the prize, a dune buggy. But when a mobster destroys the car, they are determined to get it back.', title: "Watch Out, We're Mad", score: 4.500225067138672 }, { plot: 'Four teenagers are killed in a car accident. Two of the teenagers refuse to go with "The Grim Reaper" and a race between life and death ensues!', title: 'Soultaker', score: 4.455573081970215 }, { plot: "The driver races to locate a kidnapped victim locked in the trunk of an abandoned car somewhere on the water's edge. Linked to her only by cell phone, the driver narrows in on her location in a desperate race against time and tide.", title: 'Hostage', score: 4.429774284362793 }, { plot: 'Race car driver Lucky Jackson goes to Las Vegas to earn money to pay for a new engine for his motor car. Working as a waiter, he still finds the time to court young Rusty Martin.', title: 'Viva Las Vegas', score: 4.379656791687012 }, { plot: 'Barry Pepper portrays legendary race car drive Dale Earnhardt, who died in 2001 during the last lap of the Daytona 500.', title: '3: The Dale Earnhardt Story', score: 4.3543548583984375 }, { plot: 'Bounty hunters from the future transport a doomed race-car driver to 2009 New York, where his mind will be replaced with that of a dead billionaire.', title: 'Freejack', score: 4.257633209228516 }, { plot: 'A mechanic takes his family to a car race and a series of events occur which brings problems, betrayals, violence and the unexpected death of an elderly person.', title: 'National Mechanics', score: 4.257633209228516 }, { plot: 'A hot-shot race-car named Lightning McQueen gets waylaid in Radiator Springs, where he finds the true meaning of friendship and family.', title: 'Cars', score: 4.257633209228516 }, { plot: 'Star race car Lightning McQueen and his pal Mater head overseas to compete in the World Grand Prix race. But the road to the championship becomes rocky as Mater gets caught up in an intriguing adventure of his own: international espionage.', title: 'Cars 2', score: 4.231379985809326 }, { plot: "An illegal race that takes place over the United States and nothing will stop this bunch of racers except for the occasional cop or a damsel in distress. Jackie Chan's car is not in this ...", title: 'Cannonball Fever', score: 4.1651153564453125 }, { plot: 'Roy is mad about cars, and runs Stallion Parts while attending to his yellow Mustang, far away from his daughter, which comes on holiday, while he is to attend a race. Soon he is challenged in a illegal race through the length of Norway.', title: 'Bèrning', score: 4.050384521484375 }, { plot: "It's time for the annual London to Brighton antique car rally, and Alan McKim and Ambrose Claverhouse are not going to let their friendship stop them from trying to humiliate each other. ...", title: 'Genevieve', score: 3.9916391372680664 }, { plot: "After a young man's premonition of a deadly race-car crash helps saves the lives of his peers, Death sets out to collect those who evaded their end.", title: 'The Final Destination', score: 3.9916391372680664 }, { plot: "A fast-paced comedy about a young Belgian car nut and hairdresser's apprentice, his girlfriend, and their legal and illegal attempts to get a Porsche under him for his nearing debut race.", title: 'The Departure', score: 3.832036256790161 } ]
Atlas Search では、クエリの用語に automobile
、car
、または vehicle
と race
、context
、または rally
を含むドキュメントが返されます。これは、automobile
、vehicle
、および car
を equivalent
なシノニムとして設定し、synonymous_terms
コレクションにおいて、rally
と contest
を race
の explicit
なシノニムとして設定したためです。