Docs Menu
Docs Home
/
Atlas
/ / /

MongoDB Search インデックスでのシノニム マッピングの定義

MongoDB Search インデックス定義の synonyms オプションは、コレクション内で同じ意味またはほぼ同じ意味を持つコレクションをインデックスして検索できるシノニム マッピングを指定します。シノニム(同意語)マッピングを使用してMongoDB Searchインデックスを構成するには、次の手順を実行する必要があります。

  1. クラスターにシノニム ドキュメントのコレクションを追加します。以下を確認してください。

    • コレクションは、参照先となるインデックスと同じデータベース内にあります。

    • ドキュメントは適切な形式でフォーマットされています。

  2. インデックス定義内のシノニム(同意語)マッピングでシノニム ソース コレクションを参照します。

シノニム(同意語)マッピングにより、インデックスを作成するコレクションと同じデータベース内のシノニム(同意語)ソースコレクションからシノニムを適用するクエリをサポートするようにMongoDB Searchインデックスが構成されます。シノニム(同意語) は テキスト 演算子を使用するクエリでのみ使用できます。

注意

無料(M0)階層クラスターの制限

このページでは、 シノニム(同意語)ソースコレクションの形式と、 MongoDB 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 は、インデックス定義で次のフィールドを取ります。

フィールド
タイプ
説明
必要性

analyzer

string

このシノニムマッピングで使用するアナライザの名前。

シノニム マッピングを使用すると、同じアナライザで分析されたフィールドのみをクエリすることができます。

ストップワードを含むシノニムを使用するには、標準アナライザを使用してフィールドをインデックス化するか、ストップワードを含まずにシノニム エントリを追加する必要があります。

以下を除く任意のMongoDB Searchアナライザを使用できます。

言語アナライザ:

  • lucene.kuromoji

  • lucene.cjk

カスタムアナライザトークナイザとトークン フィルター:

必須

name

string

シノニム(同意語)マッピング の名前。 名前は、インデックス定義内で一意である必要があります。 値は空のstringにできません。

必須

source

ドキュメント

シノニム(同意語)のソースコレクション。source オプションは collectionフィールドを受け取ります。

必須

source.collection

string

MongoDB Searchインデックスと同じデータベース内のMongoDBコレクションの名前。このコレクション内のドキュメントは、シノニム ソース コレクションのドキュメントで説明されている形式である必要があります。

必須

シノニム(同意語)のソースとして指定されるコレクション内の各ドキュメントは、1 つ以上の単語がその単語の 1 つ以上のシノニム(同意語)にマップする方法を示します。

注意

無料階層クラスターでは、シノニムコレクションは10,000 ドキュメントを超えることはできません。

各ドキュメントは、次のフィールドで構成する必要があります。

フィールド
タイプ
説明
必要性

input

文字列の配列

mappingType: explicitマッピングに必要です。

explicitマッピングの場合、 synonyms値は各inputトークンのシノニム(同意語)です。 値は、空またはすべて空白のstringにすることはできません。 複数のドキュメントで同じinput値を指定できます。

条件付き

mappingType

string

マッピングのタイプ。 値は次のいずれかになります。

  • equivalent - 互いに同等のトークンのセットを記述します。 この の例については、「mappingType 例 」を参照してください。

  • explicit - は input トークンと一致し、それらをすべての代替としての synonyms トークンに置き換えます。 この の例については、「mappingType 例 」を参照してください。

必須

synonyms

文字列の配列

mappingTypeequivalentの場合は相互のシノニム(同意語)である単語、またはmappingTypeexplicitの場合はinputトークンのシノニム(同意語)。 synonymsには少なくとも 1 つの値が必要です。

ストップワードを含むシノニムを使用するには、ストップワードを含まずにシノニムを追加するか、標準アナライザを使用してフィールドにインデックスを付ける必要があります。

mappingTypeの例については、「ソース コレクション ドキュメントの例」をご覧ください。

必須

コレクション内のドキュメントには他のフィールドを含めることができます。コレクション内のドキュメントは追加的であり、マッピングは重複を排除します。MongoDB Search シノニム(同意語)は別の Atlasコレクションとして保存され、Atlas の他のコレクションと同じストレージ割り当てに対してカウントされます。MongoDB Search は、大きなシノニム ソース コレクションからシノニムを適用するために、より多くのコンピューティング リソースを使用する場合があります。

警告

シノニム(同意語)ソースコレクションに無効なシノニム ドキュメントを含めないでください。MongoDB Search では、インデックスが無効なドキュメントを含むコレクションを参照シノニム マッピングを使用する場合、インデックスは作成されません。シノニム(同意語)ソースコレクションには、適切にフォーマットされたシノニム ドキュメントのみを含めます。

MongoDB では、テスト環境で適切にフォーマットされ、期待どおりに動作することを検証することなく、本番環境のシノニム ソース コレクションにシノニム ドキュメントを追加することは推奨されません。

シノニム(同意語)ソース コレクションに変更を加える場合、

  • MongoDB Search は変更を監視し、内部のシノニム マップを自動的に更新するため、インデックスを再作成する必要はありません。

  • MongoDB Search がシノニム マッピングを更新するのにかかる時間は、シノニム ソースコレクションのサイズに応じて増加します。シノニム ドキュメントへの変更は最終的にMongoDB Search クエリ結果に反映されることに注意してください。

Atlas は、sample_synonyms という名前のコレクションに次のMongoDB Searchマッピング型の例のドキュメントを提供します。これらのドキュメントは、コレクションと同じデータベース内のクラスターにロードできます。コレクションのインデックスを作成するときに、これらのドキュメントをクラスターにロードするには、次の手順を実行します。

  1. Configuration Methodを選択した場合は、Visual Editorを選択してください。

  2. インデックスをAdd synonym mappingするときは、 Synonym source collectionドロップダウンからLoad sample collectionを選択します。

次の例のソース コレクション ドキュメントでは、mappingTypeequivalent に設定されており、carvehicleautomobile の各トークンが互いに同義語として構成されています。

{
"mappingType": "equivalent",
"synonyms": ["car", "vehicle", "automobile"]
}

このようなドキュメントを含むシノニム マッピングを適用するとcarvehicle、または automobile のテキスト クエリでは、 MongoDB Search は carvehicle、または automobile というタームを含むドキュメントを返します。

次の例のソース コレクション ドキュメントでは、mappingTypeexplicit に設定されており、beerbrewpintinput トークン beer の同義語として構成されています。

{
"mappingType": "explicit",
"input": ["beer"],
"synonyms": ["beer", "brew", "pint"]
}

このようなドキュメントを含むシノニム マッピングを適用する beerテキスト クエリでは、 MongoDB Search は「beer」、「brew」、または「pint」というタームを含むドキュメントを返します。これは、input トークン beer が明示的にマッピングされているためです。これらのすべての synonyms トークンに適用されます。ただし、pint のクエリでは、 MongoDB Search は beer を含むドキュメントを見つけられません。pintbeer に明示的にマップされていないためです。

次の 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"]
}

戻る

storedSource