Docs Menu
Docs Home
/
Atlas
/ / /

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

Atlas Search の インデックス定義 にある synonyms オプションでは、同義語マッピングを指定できます。これにより、意味が同じまたはほぼ同じ単語でコレクションをインデックス化し、検索できるようになります。シノニム マッピングを使用してAtlas Search インデックスを設定するには、以下の手順を実行する必要があります。

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

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

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

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

同義語マッピングは、インデックス対象のコレクションと同じデータベース内にある同義語ソース コレクションから同義語を適用するクエリに対応できるように、Atlas Search インデックスを構成します。同義語は、text 演算子を使用するクエリでのみ使用できます。

注意

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

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

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

analyzer

string

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

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

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

以下を除く任意の 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 つの値が必要です。

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

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を選択します。

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

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

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

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

{
"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コレクションの次の例は、静的マッピングと動的マッピングを使用したインデックス定義を示しています。

次のインデックス:

  • 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"
}
}
]
}

単語を同義語として構成するコレクションをクラスターに追加し、このコレクションを使用して Atlas Search インデックスを作成し、同義語を使った Atlas Search クエリを実行する方法については、「Atlas Search で同義語を使用する方法」を参照してください。

同義語を使用したtextのクエリの例については、「同義語の例」をテキスト参照ページで参照してください。

同義語を使用した phrase クエリの例については、「同義語の例」をフレーズ リファレンス ページで参照してください。

戻る

storedSource