MongoDB Search autocomplete タイプを使用して、オートコンプリート用に string フィールドのテキスト値をインデックスできます。オートコンプリート 演算子を使用して、autocomplete タイプとしてインデックス作成されたフィールドをクエリできます。
また、 autocomplete型を使用してインデックスを作成することもできます。
値が文字列の配列であるフィールド。 詳細については、 配列の要素にインデックスを付ける方法 を参照してください。
stringembeddedDocuments 型としてインデックス付けされたドキュメントの配列内のフィールド。インデックス構築時間の考慮事項については、「インデックス構築時間」を参照してください。
動的マッピングの考慮事項については、「動的マッピング」を参照してください。
Define the Index for the autocomplete Type
Configure autocomplete Field Properties
MongoDB Search autocomplete 型は次のパラメータを取ります。
オプション | タイプ | 必要性 | 説明 | default | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| string | 必須 | このフィールド型を識別する、人間が判読できるラベル。値は | |||||||||||||||||||||||
| string | 任意 |
| |||||||||||||||||||||||
| 整数 | 任意 | インデックス シーケンスあたりの最大文字数。この値は、インデックス トークンの文字長を制限します。
|
| ||||||||||||||||||||||
| 整数 | 任意 | インデックス シーケンスあたりの最小文字数。 最小値として |
| ||||||||||||||||||||||
| 列挙 | 任意 | オートコンプリート用にフィールドをインデックスするときに使用するトークン化戦略。 値は次のいずれかになります。
パフォーマンスの考慮事項については、トークン化のパフォーマンスを参照してください。 |
| ||||||||||||||||||||||
| ブール値 | 任意 | インデックスされたテキストに分音記号を含めたり削除したりするなど、正規化を実行するかどうかを示すフラグです。値は次のいずれかになります。
|
| ||||||||||||||||||||||
| string | 任意 | autocomplete 演算子でスコアリングする際に、この文字列マッピングで使用する類似性アルゴリズムの名前。値は 利用可能な類似性アルゴリズムの詳細については、スコアの詳細で学んでください。 |
|
Try an Example for the autocomplete Type
Considerations
maxGrams 構成
maxGrams オプションは、インデックスの作成中に生成される部分文字列の最大長さを指定します。maxGrams を増やすと、より多くの部分文字列が生成されるため、より長いクエリの一致度が向上します。必要な長さを超えて設定すると、インデックスのサイズが増加し、インデックスの作成のパフォーマンスに影響する可能性があります。
maxGramsを構成する際は、次のベストプラクティスを考慮してください。
デフォルトでは15以下にします。不要なインデックスの増加を避けるため、可能な限り
maxGramsを15以下に設定します。クエリ長と一致させる。ワーストケースシナリオのインデックスを作成するのではなく、ユーザー クエリの一般的な長さに基づいて
maxGramsを設定します。インデックスの作成は避けてください。クエリが現在の
maxGrams値より短い場合、必要以上のデータがインデックス化されている可能性があります。Use an alternative for longer queries. If your queries regularly exceed 15 characters, use a custom analyzer for
prefix,contains, andsuffixpatterns.
トークン化のパフォーマンス
edgeGram 、 rightEdgeGram 、または nGram トークン化戦略を使用してオートコンプリート用にフィールドをインデックス化すると、string フィールドをインデックス化するよりも多くの計算とインデックスストレージが必要になります。
指定されたトークン化戦略に対して、MongoDB Searchは連続するトークンを結合してから出力します(「シェンリング」)。MongoDB Search は、長さが minGrams ~ maxGrams 文字のトークンを出力します:
トークンを
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.