Docs Menu
Docs Home
/
MongoDB Atlas
/ / /

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

項目一覧

  • 構文
  • オプション
  • シノニム ソース コレクション ドキュメント
  • シノニム ソース コレクション ドキュメントの形式
  • シノニムソースコレクションのドキュメントに対する変更
  • mappingType
  • equivalent
  • explicit
  • シノニム ソース コレクションの例
  • インデックス定義の例
  • 静的マッピング
  • ダイナミックマッピング

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

  1. 適切にフォーマットされたシノニム ドキュメントを含む新しい コレクションを作成します。 以下のことを確認します。

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

    • コレクション内のドキュメントを、 シノニムソースコレクションのドキュメント に記載されている形式にします。

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

    注意

    無料(M 0 )および共有(M 2および M 5 )階層クラスターの制限

このページでは、シノニム(同意語)ソース コレクションの形式と、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 は標準アナライザ( "lucene.standard" )を使用します。

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

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

言語アナライザ:

  • lucene.kuromoji

  • lucene.cjk

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

必須

name

string

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

必須

source

ドキュメント

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

必須

source.collection

string

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

必須

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

注意

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

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

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

input

文字列の配列

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

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

条件付き

mappingType

string

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

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

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

必須

synonyms

文字列の配列

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

Atlas Search では、内の単語数に関係なく、各 string を単一のトークンと見なします。 たとえば、 Atlas Searchはstring sushi chef を単一のタームとしてトークン化し、sushi または chef を個別に検索しても結果を返しません。

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

mappingType mappingTypeの例については、「 の例 」を参照してください。

必須

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

警告

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

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

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

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

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

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

  1. Configuration Methodを選択した場合、 Visual Editorを選択します。

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

このequivalentマッピング タイプの例では、 synonymsトークンcarvehicleautomobileは、相互のシノニムとして構成されています。

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

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

このexplicitマッピング タイプの例では、 inputトークンbeerは、 beerbrewpintをシノニム(同意語)とみなすように構成されています。

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

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

sample_mflix.moviesコレクションの次の例は、静的マッピングと動的マッピングを使用したインデックス定義を示しています。

注意

以下の動的マッピングインデックスを使用した sample_mflix.movies コレクションのサンプルクエリについては、テキスト演算子と フレーズ演算子の例を参照してください。

次のインデックス:

  • 1 つのテキストフィールドと、 synonymous_termsコレクションで構成されたマッピングを使用する単一のシノニム マッピング定義を含むインデックスを構成します。

  • lucene.englishアナライザでplotフィールドを分析します。

  • lucene.english アナライザーで分析されたフィールドに対するクエリで synonymous_terms コレクションからのシノニムを有効にします。

Atlas UI のビジュアル エディターまたは JSONエディターを使用して、次のインデックスを構成できます。 このインデックスを構成するには、構成方法を選択した後、 sample_mflixデータベースでmoviesコレクションを選択します。

  1. [Refine Your Index] をクリックします。

  2. Field Mappingsセクションで、 Add Fieldをクリックします。

  3. [Customized Configuration] をクリックします。

  4. Add Field Mappingウィンドウで次の設定を構成します。

    Field Name
    Enable Dynamic Mapping
    Data Type Configuration

    plot を選択します。

    を無効に切り替えます。

    1. [Add Data Type] をクリックします。

    2. ドロップダウンから [String] を選択します。

    3. lucene.englishlucene.languageIndex Analyzerドロップダウンから の下の を選択します。

  5. [Add] をクリックします。

  6. Synonyms Mappingsセクションで、 Add Synonym Mappingをクリックします。

  7. Add Synonym Mappingウィンドウで次の設定を構成します。

    Synonym mapping name
    Synonym source collection
    Analyzer

    入力 my_synonyms

    synonymous_terms を選択します。

    lucene.englishlucene.languageドロップダウンから の下の [ を選択します。

  8. [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コレクションを選択します。

  1. [Refine Your Index] をクリックします。

  2. Synonyms Mappingsセクションで、 Add Synonym Mappingをクリックします。

  3. Add Synonym Mappingウィンドウで次の設定を構成します。

    Synonym mapping name
    Synonym source collection
    Analyzer

    入力 my_synonyms

    synonymous_terms を選択します。

    まだ選択されていない場合は、ドロップダウンから [ lucene.standard ] を選択します。

  4. [Add] をクリックします。

{
"mappings": {
"dynamic": true
},
"synonyms": [
{
"analyzer": "lucene.standard",
"name": "my_synonyms",
"source": {
"collection": "synonymous_terms"
}
}
]
}

戻る

3 : 保存されたフィールドの構成