Atlas Search の インデックス定義 にある synonyms
オプションでは、同義語マッピングを指定できます。これにより、意味が同じまたはほぼ同じ単語でコレクションをインデックス化し、検索できるようになります。シノニム マッピングを使用してAtlas Search インデックスを設定するには、以下の手順を実行する必要があります。
クラスターにシノニム ドキュメントのコレクションを追加します。以下を確認してください。
コレクションは、参照先となるインデックスと同じデータベース内にあります。
ドキュメントは適切な形式でフォーマットされています。
同義語マッピングは、インデックス対象のコレクションと同じデータベース内にある同義語ソース コレクションから同義語を適用するクエリに対応できるように、Atlas Search インデックスを構成します。同義語は、text 演算子を使用するクエリでのみ使用できます。
このページでは、シノニムソースコレクションの形式と、Atlas Search インデックスでシノニムソースコレクションを参照するシノニムマッピングを定義する方法について説明します。
構文
synonyms
のインデックス定義の構文は次のとおりです。
1 { 2 "synonyms": [ 3 { 4 "name": "<synonym-mapping-name>", 5 "source": { 6 "collection": "<source-collection-name>" 7 }, 8 "analyzer": "<synonym-mapping-analyzer>" 9 } 10 ] 11 }
オプション
synonyms
は、インデックス定義で次のフィールドを取ります。
フィールド | タイプ | 説明 | 必要性 |
---|---|---|---|
| string | このシノニムマッピングで使用するアナライザの名前。 シノニム マッピングを使用すると、同じアナライザで分析されたフィールドのみをクエリすることができます。 ストップワードを含むシノニムを使用するには、標準アナライザを使用してフィールドをインデックス化するか、ストップワードを含まずにシノニム エントリを追加する必要があります。 以下を除く任意の Atlas Search アナライザを使用できます。
カスタムアナライザトークナイザとトークン フィルター:
| 必須 |
| string | シノニム(同意語)マッピング の名前。 名前は、インデックス定義内で一意である必要があります。 値は空のstringにできません。 | 必須 |
| ドキュメント | 必須 | |
| string | Atlas Searchインデックスと同じデータベース内のMongoDBコレクションの名前。 このコレクション内のドキュメントは、 シノニム ソース コレクションのドキュメント で説明されている形式である必要があります。 | 必須 |
シノニム ソース コレクション ドキュメント
シノニム(同意語)のソースとして指定されるコレクション内の各ドキュメントは、1 つ以上の単語がその単語の 1 つ以上のシノニム(同意語)にマップする方法を示します。
注意
無料階層のAtlas クラスターでは、シノニムコレクションは10,000 ドキュメントを超えることはできません。
シノニム ソース コレクション ドキュメントの形式
各ドキュメントは、次のフィールドで構成する必要があります。
フィールド | タイプ | 説明 | 必要性 |
---|---|---|---|
| 文字列の配列 |
| 条件付き |
| string | マッピングのタイプ。 値は次のいずれかになります。
| 必須 |
| 文字列の配列 |
ストップワードを含むシノニムを使用するには、ストップワードを含まずにシノニムを追加するか、標準アナライザを使用してフィールドにインデックスを付ける必要があります。 各 | 必須 |
コレクション内のドキュメントには他のフィールドを含めることができます。 コレクション内のドキュメントは追加的であり、マッピングは重複を排除します。 Atlas Search シノニム(同意語)は別の Atlas コレクションとして保存され、Atlas の他のコレクションと同じストレージ割り当てに対してカウントされます。 Atlas Search は、大きなシノニム ソース コレクションからシノニムを適用するために、より多くのコンピューティング リソースを使用する場合があります。
警告
シノニム ソース コレクションに無効なシノニム ドキュメントを含めないでください。 Atlas Search では、インデックスが無効なドキュメントを含むコレクションを参照するシノニム マッピングを使用する場合、インデックスは作成されません。 シノニム ソース コレクションには、適切にフォーマットされたシノニム ドキュメントのみを含めます。
MongoDB では、テスト環境で適切にフォーマットされ、期待どおりに動作することを検証することなく、本番環境のシノニム ソース コレクションにシノニム ドキュメントを追加することは推奨されません。
シノニムソースコレクションのドキュメントに対する変更
シノニム(同意語)ソース コレクションに変更を加える場合、
Atlas Search が変更を監視し、内部のシノニム マップを自動的に更新するため、インデックスを再作成する必要はありません。
Atlas Search がシノニム マッピングを更新するのにかかる時間は、シノニム ソース コレクションのサイズに応じて増加します。 シノニム ドキュメントへの変更は最終的に Atlas Search クエリ結果に反映されることに注意してください。
例
ソース コレクション ドキュメントの例
Atlas は、 sample_synonyms
という名前のコレクションに次の Atlas Search マッピング タイプの例のドキュメントを提供します。 これらのドキュメントは、コレクションと同じデータベース内のクラスターにロードできます。 これらのドキュメントをクラスターにロードするには、コレクションのインデックスを作成するときに、次の手順を実行します。
Configuration Methodを選択した場合は、Visual Editorを選択してください。
インデックスをAdd synonym mappingするときは、 Synonym source collectionドロップダウンからLoad sample collectionを選択します。
equivalent
mappingType
次の例のソース コレクション ドキュメントでは、mappingType
が equivalent
に設定されており、car
、vehicle
、automobile
の各トークンが互いに同義語として構成されています。
{ "mappingType": "equivalent", "synonyms": ["car", "vehicle", "automobile"] }
このようなドキュメントを含むシノニム マッピングを適用すると、car
、vehicle
、または automobile
のテキストクエリでは、car
、vehicle
、または automobile
というAtlas Searchを含むドキュメントが返されます。
explicit
mappingType
次の例のソース コレクション ドキュメントでは、mappingType
が equivalent
に設定されており、beer
、brew
、pint
が input
トークン beer
の同義語として構成されています。
{ "mappingType": "explicit", "input": ["beer"], "synonyms": ["beer", "brew", "pint"] }
このようなドキュメントを含むシノニム マッピングを適用するbeer
のテキストクエリでは、 input
トークンbeer
が明示的にマッピングされているため、Atlas Search は「beer」、「brew」、または「pint」というタームを含むドキュメントを返します。これらのすべてのsynonyms
トークンに適用されます。 ただし、 pint
のクエリでは、Atlas Search はbeer
を含むドキュメントを見つけられません。 pint
はbeer
に明示的にマップされていないためです。
シノニム ソース コレクションの例
次の synonymous_terms
というコレクションは、sample_mflix
データベースの movies
コレクションで使用できるシノニムソースコレクションの例です。
sample_mflix.synonymous_terms
コレクションには次のドキュメントが含まれます。
{ "mappingType": "equivalent", "synonyms": ["car", "vehicle", "automobile"] }
{ "mappingType": "explicit", "input": ["race"], "synonyms": ["contest", "rally"] }
{ "mappingType": "equivalent", "synonyms": ["dress", "apparel", "attire"] }
{ "mappingType": "explicit", "input": ["boat"], "synonyms": ["vessel", "sail"] }
インデックス定義の例
sample_mflix.movies
コレクションの次の例は、静的マッピングと動的マッピングを使用したインデックス定義を示しています。
静的マッピング
次のインデックス:
1 つのテキストフィールドと、
synonymous_terms
コレクションで構成されたマッピングを使用する単一のシノニム マッピング定義を含むインデックスを構成します。lucene.english
アナライザでplot
フィールドを分析します。lucene.english
アナライザーで分析されたフィールドに対するクエリでsynonymous_terms
コレクションからのシノニムを有効にします。
Atlas UI のビジュアル エディターまたは JSONエディターを使用して、次のインデックスを構成できます。 このインデックスを構成するには、構成方法を選択した後、 sample_mflix
データベースでmovies
コレクションを選択します。
[Refine Your Index] をクリックします。
Field Mappingsセクションで、 Add Fieldをクリックします。
[Customized Configuration] をクリックします。
Add Field Mappingウィンドウで次の設定を構成します。
Field NameEnable Dynamic MappingData Type Configurationplot
を選択します。を無効に切り替えます。
[Add Data Type] をクリックします。
ドロップダウンから [String] を選択します。
lucene.english
lucene.language
Index Analyzerドロップダウンから の下の を選択します。
[Add] をクリックします。
Synonyms Mappingsセクションで、 Add Synonym Mappingをクリックします。
Add Synonym Mappingウィンドウで次の設定を構成します。
Synonym mapping nameSynonym source collectionAnalyzer入力
my_synonyms
synonymous_terms
を選択します。lucene.english
lucene.language
ドロップダウンから の下の [ を選択します。[Add] をクリックします。
デフォルトのインデックスを以下のインデックスに置き換えます。
{ "mappings": { "dynamic": false, "fields": { "plot": { "type": "string", "analyzer": "lucene.english" } } }, "synonyms": [ { "analyzer": "lucene.english", "name": "my_synonyms", "source": { "collection": "synonymous_terms" } } ] }
ダイナミックマッピング
次のインデックス:
ドキュメント内のすべてのフィールドのインデックスと、
synonymous_terms
コレクションで構成されたマッピングを使用する単一のシノニム マッピング定義を構成します。デフォルトのアナライザ
lucene.standard
を使用して、すべてのフィールドを分析します。lucene.standard
アナライザーで分析されたフィールドに対するクエリでsynonymous_terms
コレクションからのシノニムを有効にします。
Atlas UI のビジュアル エディターまたはJSONエディターを使用して、次のインデックスを構成できます。 このインデックスを構成するには、構成方法を選択した後、 sample_mflix
データベースでmovies
コレクションを選択します。
[Refine Your Index] をクリックします。
Synonyms Mappingsセクションで、 Add Synonym Mappingをクリックします。
Add Synonym Mappingウィンドウで次の設定を構成します。
Synonym mapping nameSynonym source collectionAnalyzer入力
my_synonyms
synonymous_terms
を選択します。まだ選択されていない場合は、ドロップダウンから [
lucene.standard
] を選択します。[Add] をクリックします。
{ "mappings": { "dynamic": true }, "synonyms": [ { "analyzer": "lucene.standard", "name": "my_synonyms", "source": { "collection": "synonymous_terms" } } ] }
詳細
単語を同義語として構成するコレクションをクラスターに追加し、このコレクションを使用して Atlas Search インデックスを作成し、同義語を使った Atlas Search クエリを実行する方法については、「Atlas Search で同義語を使用する方法」を参照してください。
同義語を使用したtext
のクエリの例については、「同義語の例」をテキスト参照ページで参照してください。
同義語を使用した phrase
クエリの例については、「同義語の例」をフレーズ リファレンス ページで参照してください。