AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

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

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

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

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

    • The documents are properly formatted

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

注意

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

インデックス定義には同義語マッピングを 1 つだけ含めることができます。

このページでは、 シノニム(同意語)ソースコレクションの形式と、 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 for synonyms. The source option takes the collection field.

必須

source.collection

string

Name of the MongoDB collection that is in the same database as the MongoDB Search index. Documents in this collection must be in the format described in the Synonyms Source Collection Documents.

必須

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

注意

On free clusters, the synonyms collection can't exceed 10,000 documents.

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

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

input

文字列の配列

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

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

条件付き

mappingType

string

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

  • equivalent - describes a set of tokens that are equivalent to one another. For an example of this mappingType, see Example.

  • explicit - matches input tokens and replaces them with all alternative synonyms tokens. For an example of this mappingType, see Example.

必須

synonyms

文字列の配列

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

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

For an example of each mappingType see Source Collection Document Examples.

必須

コレクション内のドキュメントには他のフィールドを含めることができます。コレクション内のドキュメントは追加的であり、マッピングは重複を排除します。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を選択します。

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

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

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

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

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

このようなドキュメントを含むシノニム マッピングを適用する beer のテキスト クエリでは、 MongoDB Search は「beer」、「brew」、または「pint」というタームを含むドキュメントを返します。これは、input トークン beer が明示的にマッピングされているためです。これらのすべての synonyms トークンに適用されます。ただし、pint のクエリでは、 MongoDB 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"]
}