Atlas Search インデックスでのシノニム マッピングの定義
項目一覧
Atlas Search インデックス定義の synonyms
オプションは、コレクション内で同じ意味またはほぼ同じ意味を持つコレクションをインデックスして検索できるシノニム マッピングを指定します。シノニム(同意語)マッピング を使用して Atlas Searchインデックスを構成するには、次の手順を実行する必要があります。
シノニム(同意語)ドキュメントのコレクションをクラスターに追加します。以下のことを確認します。
シノニム(同意語)マッピングにより、インデックスを作成するコレクションと同じデータベース内のシノニム(同意語)ソースコレクションからシノニムを適用するクエリをサポートするように Atlas Searchインデックスが構成されます。シノニム(同意語) は テキスト演算子を使用するクエリでのみ使用できます。
このページでは、 シノニム(同意語)ソースコレクションの形式と、 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
フレーズ 参照ページの 「 シノニムの例 」 を参照してください。