Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

オートコンプリート用にフィールドをインデックスする方法

MongoDB Search autocomplete タイプを使用して、オートコンプリート用に string フィールド内のテキスト値をインデックスできます。autocompleteオートコンプリート演算子を使用して、 タイプとしてインデックス作成されたフィールドをクエリできます。

また、 autocomplete型を使用してインデックスを作成することもできます。

  • 値が文字列の配列であるフィールド。 詳細については、 配列の要素にインデックスを付ける方法 を参照してください。

  • stringembeddedDocuments 型としてインデックス付けされたドキュメントの配列内の フィールド。

    Tip

    オートコンプリート 演算子を使用してMongoDB Search クエリを実行する必要がある場合、このインデックスの構築に時間がかかることがあります。あるいは、autocomplete タイプのみを含む別のインデックスを作成して、インデックスのビルド中に他のインデックスやクエリへの影響を軽減することもできます。

    詳しくは、 MongoDB Search インデックスのパフォーマンスに関する考慮事項 を参照してください。

  • autocomplete 型は、 MongoDB Search が 動的マッピング に使用するデフォルトのタイプセットには含まれていません。string フィールドを autocomplete タイプとして動的にインデックスには、カスタム typeSet 定義に autocomplete タイプを含めることができます。ただし、autocomplete には独自のパフォーマンス、ストレージ、スコアリング特性があり、動的マッピングには適していない可能性があります。静的マッピングでのみ autocomplete を使用することを推奨します。詳しくは、 MongoDB Search インデックスのパフォーマンス を参照してください。

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

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

type

string

必須

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

analyzer

string

任意

このオートコンプリート マッピングで使用するアナライザの名前。MongoDB Searchアナライザは、lucene.kuromoji言語アナライザと次のカスタムアナライザトークナイザとトークン フィルターを除き、任意の MongoDB Search アナライザを使用できます。

lucene.standard

maxGrams

整数

任意

インデックス シーケンスあたりの最大文字数。この値は、インデックス トークンの文字長を制限します。maxGrams 値より長いタームを検索すると、 MongoDB Search はトークンを maxGrams の長さまで切り捨てます。

We recommend setting the maxGrams value to be less than or equal to 15 to optimize performance. A higher value increases the size of the index and can impact performance. If you require more than 15 characters for autocompletion, we recommend configuring custom analyzer to avoid truncating queries.

15

minGrams

整数

任意

インデックス シーケンスあたりの最小文字数。 最小値として4を推奨しています。 4未満の場合、インデックスのサイズが非常に大きくなる可能性があるため、パフォーマンスに影響を与える可能性があります。 edgeGramにはデフォルト値2を推奨します。

2

tokenization

列挙

任意

オートコンプリート用にフィールドをインデックスするときに使用するトークン化戦略。 値は次のいずれかになります。

  • edgeGram - このオートコンプリート マッピングで使用されるアナライザによって区切られた、単語の左側から始まる変数長の文字シーケンスから、 gramsと呼ばれるインデックス可能なトークンを作成します。

  • rightEdgeGram - このオートコンプリート マッピングで使用されるアナライザによって区切られた、単語の右側から始まる変数長の文字シーケンスから、 gramsと呼ばれるインデックス可能なトークンを作成します。

  • nGram - 変数の長さの文字ウィンドウを単語の上でスライドして、gramsと呼ばれるインデックスを作成可能なトークンを作成します。MongoDB Search は、edgeGram または rightEdgeGram よりも多くの nGram のトークンを作成します。したがって、nGram はフィールドのインデックスにより多くのスペースと時間を必要とします。nGram は、長い複合語を含む言語や、スペースを使用しない言語のクエリに適しています。

edgeGramrightEdgeGramnGramは文字レベルで適用されます。 たとえば、次の文章について考えてみましょう。

The quick brown fox jumps over the lazy dog.

2minGrams 値と 5maxGrams 値でトークン化すると、 MongoDB Search は選択した tokenization 値に基づいて次の文字のシーケンスをインデックス化します。

edgeGramrightEdgeGram 、またはnGramトークン化戦略を使用してオートコンプリート用にフィールドをインデックス化すると、string フィールドをインデックス化するよりも計算コストが高くなります。 インデックスは、通常の string フィールドを含むインデックスよりも多くのスペースを必要とします。

指定されたトークン化戦略では、 MongoDB Search は次のプロセスを適用して、連続したトークンを発行する前に連結します。このプロセスは「照合」と呼ばれることもあります。MongoDB Search は、長さが minGrams 文字と maxGrams 文字の間のトークンを発行します。

  • トークンをminGrams未満に保持します。

  • minGramsより大きくmaxGrams未満のトークンを後続のトークンに結合し、指定された最大文字数までのトークンを作成します。

edgeGram

foldDiacritics

ブール値

任意

インデックスされたテキストに発音区別符号を含めたり削除したりするなど、正規化を実行するかどうかを示すフラグです。値は次のいずれかになります。

  • true -インデックスとクエリテキスト内の発音区別符号を無視するなどの正規化を実行します。例、cafè を検索すると、cafècafe という文字を含む結果が返されます。これは、 MongoDB Search が の結果と発音区別符号のない結果を返すためです。

  • false -インデックスやクエリテキスト内の発音区別符号を無視するなどの正規化を実行しないでください。したがって、 MongoDB Search では、クエリ内に発音区別符号の有無にかかわらず string と一致する結果のみが返されます。例、cafè を検索すると、cafè という文字のみを含む結果が返されます。cafe を検索すると、cafe という文字のみを含む結果が返されます。

true

similarity.type

string

任意

autocomplete 演算子でスコアリングする際に、この文字列マッピングで使用する類似性アルゴリズムの名前。値は bm25boolean、または stableTfl のいずれかになります。

利用可能な類似性アルゴリズムの詳細については、スコアの詳細で学んでください。

bm25

autocomplete演算子の詳細とクエリの例については、「オートコンプリート」を参照してください。

For examples that demonstrate how to run case-insensitive, prefix, starts with, and contains queries using regex expressions, see Use MongoDB Search Instead of Regex Queries.

戻る

配列

項目一覧