Docs Menu

string フィールドのインデックス作成方法

Atlas Search stringタイプを使用してstringフィールドをインデックスできます。 Atlas Search phrasequeryStringspantextwildcardregexmoreLikeThis演算子を使用して、 string型としてインデックス付けされたフィールドをクエリできます。

動的マッピングを有効にすると、Atlas Search はstring型のフィールドを自動的にインデックス化します。 Atlas UI のビジュアル エディターまたはJSON エディターを使用して、 stringタイプのフィールドにインデックスを付けることができます。

Atlas Search stringタイプを使用して、ファセットクエリまたはオートコンプリートクエリのフィールドをインデックス化することはできません。 Atlas Search 結果をソートするためのフィールドのインデックス作成には、 stringタイプは使用できません。 代わりに、静的マッピングを使用して string フィールドを次のタイプとしてインデックス化する必要があります。

重要

Atlas Search は、アナライザ トークンのサイズが 32766 バイトを超える string フィールドのインデックスを作成しません。キーワード アナライザを使用する場合は、32766 バイトを超える string フィールドのインデックスを作成しません。

stringタイプのインデックスを定義するには、Atlas UI で希望する構成方法を選択し、データベースとコレクションを選択します。

  1. インデックスを設定するには、 Refine Your Indexをクリックします。

  2. Field Mappingsセクションで、 Add FieldをクリックしてAdd Field Mappingウィンドウを開きます。

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

  4. Field Nameドロップダウンからインデックスするフィールドを選択します。

    注意

    フィールド名の先頭にドル記号($)が含まれるフィールドにはインデックスを付けられません。

  5. Data Typeドロップダウンをクリックし、String を選択します。

  6. (任意) フィールドのString Propertiesを展開して構成します。 詳しくは、「 stringフィールド プロパティの構成 」を参照してください。

  7. (任意) Add Multi Fieldをクリックして、そのフィールドの次の代替アナライザ設定を構成します。

    1. Multi Field Nameフィールドに代替アナライザの名前を入力します。

    2. Multi Field Propertiesの下で代替アナライザの string フィールド プロパティを構成します。 詳しくは、「 stringフィールド プロパティの構成 」を参照してください。

    3. (任意) Add Another Mult Fieldをクリックし、ステップ1bを繰り返して、フィールドのさらにのアナライザを設定します。

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

以下は、 string型のJSON構文です。 デフォルトのインデックス定義を以下のように置き換えます。 フィールドの詳細については、「フィールド プロパティ」を参照してください。

{
"mappings": {
"dynamic": true|false,
"fields": {
"<field-name>": {
"type": "string",
"analyzer": "<atlas-search-analyzer>",
"searchAnalyzer": "<atlas-search-analyzer>",
"indexOptions": "docs|freqs|positions|offsets",
"store": true|false,
"ignoreAbove": <integer>,
"multi": {<string-field-definition>},
"norms": "include|omit"
}
}
}
}

Atlas Search string型は次のパラメータを取ります。

オプション
タイプ
必要性
説明
default

type

string

必須

このフィールド型を識別する、人間が判読できるラベル。値はstringでなければなりません。

analyzer

string

任意

フィールドのインデックス作成に使用する組み込みまたはカスタムアナライザの名前。 値を指定しない場合、 はデフォルトで以下の順序でアナライザを継承します。

  1. インデックスanalyzerオプション(指定されている場合)。

  2. lucene.standardアナライザ。

searchAnalyzer

string

任意

フィールドをクエリするときに使用するアナライザ。 値を指定しない場合、 はデフォルトで以下の順序でアナライザを継承します。

  1. このフィールドのanalyzerオプション(指定されている場合)。

  2. インデックスsearchAnalyzerオプション(指定されている場合)。

  3. インデックスanalyzerオプション(指定されている場合)。

  4. lucene.standardアナライザ。

indexOptions

string

任意

インデックス フィールドに保存する情報の量。 値は次のいずれかになります。

  • docs - ドキュメントのインデックスのみを作成します。 インデックス付きタームの頻度と位置は無視されます。 タームの 1 回の出現のみがスコアに反映されます。

  • freqs - ドキュメントとターム頻度のみをインデックス化します。 インデックス付きタームの位置は無視されます。

  • positions - ドキュメント、ターム頻度、ターム位置のインデックスを作成します。

  • offsets -(デフォルト)ドキュメント、ターム頻度、ターム位置、ターム オフセットのインデックスを作成します。 このオプションはハイライトに必要です。

offsets

store

ブール値

任意

正確なドキュメント テキストと分析された値をインデックスに保存するかどうかを示すフラグ。 値はtrueまたはfalseです。 ハイライトでは、このオプションの値はtrueである必要があります。

インデックス サイズとパフォーマンスのフットプリントを削減するには、 storefalseに設定することをお勧めします。 詳しくは、 「 Atlas Search インデックス パフォーマンス」 を参照してください。

true

ignoreAbove

整数

任意

インデックスを作成するフィールドの値の最大文字数。 Atlas Search は、 フィールド値が指定された文字数を超える場合、インデックスを作成しません。

multi

string フィールドの定義

任意

multiオブジェクトで指定された代替アナライザの名前を含むインデックスへの stringフィールド。 multiオブジェクトの指定の詳細については、 マルチアナライザ と以下の例を参照してください。

norms

string

任意

スコアリング時に結果にフィールドの長さを含めるか省略するかを指定するstring 。 フィールドの長さは、フィールドの アナライザ が生成したトークンの数によって決まります。 値は次のいずれかになります。

  • include - スコアリング時にフィールドの長さを含める

  • omit - スコアリング時にフィールド長を省略します。

値がincludeの場合、Atlas Search はスコアリング時に フィールドの長さを使用して上位のスコアを決定します。 たとえば、2 つのドキュメントが Atlas Search クエリに一致する場合、フィールド長が短いドキュメントの方がフィールド長が長いドキュメントよりもスコアが高くなります。

値がomitの場合、Atlas Search はスコアリング時にフィールドの長さを無視します。

include

次のインデックス定義の例では、 sample_mflix.moviesコレクションを使用します。 サンプル データがすでにクラスターにロードされている場合は、Atlas UI のビジュアル エディターまたはJSONエディターを使用してインデックスを構成できます。 ご希望の構成方法を選択したら、データベースとコレクションを選択し、インデックスを微調整してフィールド マッピングを追加します。

次のインデックス定義では、 titleフィールドの string 値を Atlas Search stringタイプとしてインデックス化します。

  1. Add Field Mappingウィンドウで、 Field Nameドロップダウンからtitleを選択します。

  2. Data Typeドロップダウンをクリックし、String を選択します。

  3. String Propertiesのデフォルト設定を確認します。

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

デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。

{
"mappings": {
"dynamic": false,
"fields": {
"title": {
"type": "string"
}
}
}
}

次のインデックス定義では、デフォルトの アナライザに加えて アナライザと アナライザを使用して、 フィールドの string 値をインデックス化します。fullplotlucene.englishlucene.frenchlucene.standard

  1. Add Field Mappingウィンドウで、 Field Nameドロップダウンからfullplotを選択します。

  2. Data Typeドロップダウンをクリックし、String を選択します。

  3. String Propertiesのデフォルト設定を確認します。

  4. Add Multi Fieldをクリックし、 Multi Field Nameフィールドにenglishと入力し、次のMulti Field Propertiesを設定します。

    インデックスアナライザ

    lucene.englishlucene.language を選択します。

    searchAnalyzer

    lucene.englishlucene.language を選択します。

  5. Add Another Multi Fieldをクリックし、 Multi Field Nameフィールドにfrenchと入力し、次のMulti Field Propertiesを設定します。

    インデックスアナライザ

    lucene.frenchlucene.language を選択します。

    searchAnalyzer

    lucene.frenchlucene. language を選択します。

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

デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。

{
"mappings": {
"dynamic": false,
"fields": {
"fullplot": {
"type": "string",
"multi": {
"english": {
"type": "string",
"analyzer": "lucene.english"
},
"french": {
"type": "string",
"analyzer": "lucene.french"
}
}
}
}
}
}