Atlas Search インデックスでのシノニム マッピングの定義
項目一覧
synonyms
を使用すると、コレクション内で同じ意味またはほぼ同じ意味を持つ単語をインデックスして検索できます。 シノニム マッピングを使用して Atlas Search インデックスを構成するには、次の手順を実行する必要があります。
適切にフォーマットされたシノニム ドキュメントを含む新しい コレクションを作成します。 以下のことを確認します。
コレクションは、コレクションを参照するインデックスと同じデータベース内にあります。
コレクション内のドキュメントを、 シノニムソースコレクションのドキュメント に記載されている形式にします。
このページでは、シノニム(同意語)ソース コレクションの形式と、Atlas Search インデックス内のシノニム ソース コレクションを参照するシノニム マッピングを定義する方法について説明します。 シノニム(同意語)マッピングにより、別のシノニム ソース コレクションからシノニムを適用するクエリをサポートするように Atlas Search インデックスが構成されます。 Atlas UIまたは Atlas Search APIで Atlas Search Visual Editorビューまたは Atlas Search JSON Editorビューを使用してインデックスを作成できます。 シノニム(同意語) はテキスト演算子を使用するクエリでのみ使用できます。
構文
synonyms
のインデックス定義の構文は次のとおりです。
1 { 2 "name": "<index-name>", 3 "analyzer": "<analyzer-for-index>", 4 "searchAnalyzer": "<analyzer-for-query>", 5 "mappings": { 6 "dynamic": <boolean>, 7 "fields": { <field-definition> } 8 }, 9 "synonyms": [ 10 { 11 "name": "<synonym-mapping-name>", 12 "source": { 13 "collection": "<source-collection-name>" 14 }, 15 "analyzer": "<synonym-mapping-analyzer>" 16 } 17 ] 18 }
オプション
synonyms
は、インデックス定義で次のフィールドを取ります。
フィールド | タイプ | 説明 | 必要性 |
---|---|---|---|
analyzer | string | このシノニムマッピングで使用するアナライザの名前。 シノニム(同意語)マッピング を使用して、同じアナライザで分析されたフィールドのみをクエリできます。 デフォルトでは、Atlas Search は標準アナライザ( ストップワードを含むシノニムを使用するには、標準アナライザを使用してフィールドをインデックス化するか、ストップワードを含まずにシノニム エントリを追加する必要があります。 以下を除く任意の Atlas Search アナライザを使用できます。
カスタムアナライザトークナイザとトークン フィルター:
| 必須 |
name | string | シノニム(同意語)マッピング の名前。 名前は、インデックス定義内で一意である必要があります。 値は空のstringにできません。 | 必須 |
source | ドキュメント | 必須 | |
source.collection | string | Atlas Search インデックスと同じデータベース内の MongoDB コレクションの名前。 このコレクション内のドキュメントは、シノニム ソース コレクションのドキュメント で説明されている形式である必要があります。 | 必須 |
シノニム ソース コレクション ドキュメント
シノニム(同意語)のソースとして指定されるコレクション内の各ドキュメントは、1 つ以上の単語がその単語の 1 つ以上のシノニム(同意語)にマップする方法を示します。
注意
無料および共有階層の Atlas クラスターでは、シノニム コレクションは 10,000 ドキュメントを超えることはできません。
シノニム ソース コレクション ドキュメントの形式
各ドキュメントは、次のフィールドで構成する必要があります。
フィールド | タイプ | 説明 | 必要性 |
---|---|---|---|
input | 文字列の配列 |
| 条件付き |
mappingType | string | マッピングのタイプ。 値は次のいずれかになります。
| 必須 |
synonyms | 文字列の配列 |
Atlas Search では、内の単語数に関係なく、各 string を単一のトークンと見なします。 たとえば、 Atlas Searchはstring ストップワードを含むシノニムを使用するには、ストップワードを含まずにシノニムを追加するか、標準アナライザを使用してフィールドにインデックスを付ける必要があります。 各 | 必須 |
コレクション内のドキュメントには他のフィールドを含めることができます。 コレクション内のドキュメントは追加的であり、マッピングは重複を排除します。 Atlas Search シノニム(同意語)は別の Atlas コレクションとして保存され、Atlas の他のコレクションと同じストレージ割り当てに対してカウントされます。 Atlas Search は、大きなシノニム ソース コレクションからシノニムを適用するために、より多くのコンピューティング リソースを使用する場合があります。
警告
シノニム ソース コレクションに無効なシノニム ドキュメントを含めないでください。 Atlas Search では、インデックスが無効なドキュメントを含むコレクションを参照するシノニム マッピングを使用する場合、インデックスは作成されません。 シノニム ソース コレクションには、適切にフォーマットされたシノニム ドキュメントのみを含めます。
MongoDB では、テスト環境で適切にフォーマットされ、期待どおりに動作することを検証することなく、本番環境のシノニム ソース コレクションにシノニム ドキュメントを追加することは推奨されません。
シノニムソースコレクションのドキュメントに対する変更
シノニム(同意語)ソース コレクションに変更を加える場合、
Atlas Search が変更を監視し、内部のシノニム マップを自動的に更新するため、インデックスを再作成する必要はありません。
Atlas Search がシノニム マッピングを更新するのにかかる時間は、シノニム ソース コレクションのサイズに応じて増加します。 シノニム ドキュメントへの変更は最終的に Atlas Search クエリ結果に反映されることに注意してください。
mappingType
例
Atlas は、 sample_synonyms
という名前のコレクションに次の Atlas Search マッピング タイプの例のドキュメントを提供します。 これらのドキュメントは、コレクションと同じデータベース内のクラスターにロードできます。 これらのドキュメントをクラスターにロードするには、コレクションのインデックスを作成するときに、次の手順を実行します。
Configuration Methodを選択した場合、 Visual Editorを選択します。
インデックスをAdd synonym mappingするときは、 Synonym source collectionドロップダウンからLoad sample collectionを選択します。
equivalent
例
このequivalent
マッピング タイプの例では、 synonyms
トークンcar
、 vehicle
、 automobile
は、相互のシノニムとして構成されています。
{ "mappingType": "equivalent", "synonyms": ["car", "vehicle", "automobile"] }
このようなドキュメントを含むシノニム マッピングを適用すると、car
、vehicle
、または automobile
のテキストクエリでは、car
、vehicle
、または automobile
というAtlas Searchを含むドキュメントが返されます。
explicit
例
このexplicit
マッピング タイプの例では、 input
トークンbeer
は、 beer
、 brew
、 pint
をシノニム(同意語)とみなすように構成されています。
{ "mappingType": "explicit", "input": ["beer"], "synonyms": ["beer", "brew", "pint"] }
このようなドキュメントを含むシノニム マッピングを適用するbeer
のテキストクエリでは、 input
トークンbeer
が明示的にマッピングされているため、Atlas Search は「beer」、「brew」、または「pint」というタームを含むドキュメントを返します。これらのすべてのsynonyms
トークンに適用されます。 ただし、 pint
のクエリでは、Atlas Search はbeer
を含むドキュメントを見つけられません。 pint
はbeer
に明示的にマップされていないためです。
例
このページの例には、次のものが含まれます。
sample_mflix
データベース内のsynonymous_terms
というサンプルシノニムソースコレクション。sample_mflix.movies
コレクションとsample_mflix.synonymous_terms
コレクション内のドキュメントに依存するインデックス定義の例。
シノニム ソース コレクションの例
次の 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" } } ] }