Docs Menu
Docs Home
/
MongoDB Atlas
/ / / /

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

項目一覧

  • string型の制限を確認する
  • string 型のインデックスを定義する
  • stringフィールド プロパティを構成する
  • 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タイプのインデックスを定義するには、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"
}
}
}
}
}
}

戻る

objectId