AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

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

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

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

動的マッピングの考慮事項については、「動的マッピング」を参照してください。

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

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

type

string

必須

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

analyzer

string

任意

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

lucene.standard

maxGrams

整数

任意

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

maxGrams のベストプラクティスについては、maxGrams 構成を参照してください。

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 値に基づいて次の文字のシーケンスをインデックス化します。

th
the
the{SPACE}
the q
qu
qui
quic
uick
...

og
dog
{SPACE}dog
y dog
zy
azy
lazy
{SPACE}lazy
he
the
{SPACE}the
r the
er
ver
over
{SPACE}over
...

th
the
the{SPACE}
the q
he
he{SPACE}
he q
he qu
e{SPACE}
e q
e qu
e qui
{SPACE}q
{SPACE}qu
{SPACE}qui
{SPACE}quic
qu
qui
quic
quick
...

パフォーマンスの考慮事項については、トークン化のパフォーマンスを参照してください。

edgeGram

foldDiacritics

ブール値

任意

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

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

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

true

similarity.type

string

任意

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

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

bm25

maxGrams オプションは、インデックスの作成中に生成される部分文字列の最大長さを指定します。maxGrams を増やすと、より多くの部分文字列が生成されるため、より長いクエリの一致度が向上します。必要な長さを超えて設定すると、インデックスのサイズが増加し、インデックスの作成のパフォーマンスに影響する可能性があります。

maxGramsを構成する際は、次のベストプラクティスを考慮してください。

  • デフォルトでは15以下にします。不要なインデックスの増加を避けるため、可能な限りmaxGrams15以下に設定します。

  • クエリ長と一致させる。ワーストケースシナリオのインデックスを作成するのではなく、ユーザー クエリの一般的な長さに基づいて maxGrams を設定します。

  • インデックスの作成は避けてください。クエリが現在の maxGrams 値より短い場合、必要以上のデータがインデックス化されている可能性があります。

  • Use an alternative for longer queries. If your queries regularly exceed 15 characters, use a custom analyzer for prefix, contains, and suffix patterns.

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

指定されたトークン化戦略に対して、MongoDB Searchは連続するトークンを結合してから出力します(「シェンリング」)。MongoDB Search は、長さが minGramsmaxGrams 文字のトークンを出力します:

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

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

MongoDB Search が ダイナミック マッピング に使用するデフォルトのフィールド タイプには、autocomplete タイプは含まれません。ダイナミック マッピングで autocomplete タイプを使用すると、インデックス サイズとリソース使用量が増加し、予期せぬスコアリング結果が生じる可能性があります。静的マッピングで autocomplete を使用します。

ただし、ダイナミックマッピングに autocomplete を含める必要がある場合は、カスタム typeSet 定義に追加できます。autocomplete とカスタム typeSet 構成の詳細については、「インデックスのサイズと構成」を参照してください。

データセットに多くのドキュメントが含まれている場合や、データ範囲が広い場合、自動補完演算子のこのインデックスの構築に時間がかかる場合があります。新しいインデックスの構築中に他のインデックスやクエリへの影響を軽減するには、autocomplete タイプのみを含む別個のインデックスを作成します。

インデックスのパフォーマンスに関する考慮事項については、「インデックスのパフォーマンスに関する考慮事項」をご覧ください。

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

For examples that demonstrate how to run case-insensitive, prefix, starts with, and contains queries using regex expressions, see Use $search Instead of $text or $regex.