MongoDB Search autocomplete タイプを使用して、オートコンプリート用に string フィールドのテキスト値をインデックスできます。オートコンプリート 演算子を使用して、autocomplete タイプとしてインデックス作成されたフィールドをクエリできます。
また、 autocomplete型を使用してインデックスを作成することもできます。
値が文字列の配列であるフィールド。 詳細については、 配列の要素にインデックスを付ける方法 を参照してください。
String fields inside an array of documents indexed as the embeddedDocuments type. For index build time considerations, see Index Build Time.
For dynamic mapping considerations, see Dynamic Mappings.
autocomplete 型のインデックスを定義する
autocomplete フィールド プロパティを構成する
MongoDB Search autocomplete 型は次のパラメータを取ります。
オプション | タイプ | 必要性 | 説明 | default | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| string | 必須 | このフィールド型を識別する、人間が判読できるラベル。値は | |||||||||||||||||||||||
| string | 任意 |
| |||||||||||||||||||||||
| 整数 | 任意 | インデックス シーケンスあたりの最大文字数。この値は、インデックス トークンの文字長を制限します。 For |
| ||||||||||||||||||||||
| 整数 | 任意 | インデックス シーケンスあたりの最小文字数。 最小値として |
| ||||||||||||||||||||||
| 列挙 | 任意 | オートコンプリート用にフィールドをインデックスするときに使用するトークン化戦略。 値は次のいずれかになります。
For performance considerations, see Tokenization Performance. |
| ||||||||||||||||||||||
| ブール値 | 任意 | インデックスされたテキストに分音記号を含めたり削除したりするなど、正規化を実行するかどうかを示すフラグです。値は次のいずれかになります。
|
| ||||||||||||||||||||||
| string | 任意 | autocomplete 演算子でスコアリングする際に、この文字列マッピングで使用する類似性アルゴリズムの名前。値は 利用可能な類似性アルゴリズムの詳細については、スコアの詳細で学んでください。 |
|
autocomplete 型の例を試す
Considerations
maxGrams 構成
maxGrams オプションは、インデックスの作成中に生成される部分文字列の最大長さを指定します。maxGrams を増やすと、より多くの部分文字列が生成されるため、より長いクエリの一致度が向上します。必要な長さを超えて設定すると、インデックスのサイズが増加し、インデックスの作成のパフォーマンスに影響する可能性があります。
maxGramsを構成する際は、次のベストプラクティスを考慮してください。
デフォルトでは15以下にします。不要なインデックスの増加を避けるため、可能な限り
maxGramsを15以下に設定します。クエリ長と一致させる。ワーストケースシナリオのインデックスを作成するのではなく、ユーザー クエリの一般的な長さに基づいて
maxGramsを設定します。インデックスの作成は避けてください。クエリが現在の
maxGrams値より短い場合、必要以上のデータがインデックス化されている可能性があります。長いクエリには別の方法を使用します。クエリが定期的に 15 文字を超える場合は、カスタムアナライザ を
prefix、contains、suffixのパスワードなしに使用します。
トークン化のパフォーマンス
edgeGram 、 rightEdgeGram 、または nGram トークン化戦略を使用してオートコンプリート用にフィールドをインデックス化すると、string フィールドをインデックス化するよりも多くの計算とインデックスストレージが必要になります。
指定されたトークン化戦略に対して、MongoDB Searchは連続するトークンを結合してから出力します(「シェンリング」)。MongoDB Search は、長さが minGrams ~ maxGrams 文字のトークンを出力します:
トークンを
minGrams未満に保持します。minGramsより大きくmaxGrams未満のトークンを次のトークンに結合し、指定された最大文字数までの長さのトークンを作成します。
ダイナミックマッピング
MongoDB Search が ダイナミック マッピング に使用するデフォルトのフィールド タイプには、autocomplete タイプは含まれません。ダイナミック マッピングで autocomplete タイプを使用すると、インデックス サイズとリソース使用量が増加し、予期せぬスコアリング結果が生じる可能性があります。静的マッピングで autocomplete を使用します。
ただし、ダイナミックマッピングに autocomplete を含める必要がある場合は、カスタム typeSet 定義に追加できます。autocomplete とカスタム typeSet 構成の詳細については、「インデックスのサイズと構成」を参照してください。
インデックス構築時間
データセットに多くのドキュメントが含まれている場合や、データ範囲が広い場合、自動補完演算子のこのインデックスの構築に時間がかかる場合があります。新しいインデックスの構築中に他のインデックスやクエリへの影響を軽減するには、autocomplete タイプのみを含む別個のインデックスを作成します。
インデックスのパフォーマンスについては、「インデックスのパフォーマンスについて」を参照してください。
詳細
autocomplete演算子の詳細とクエリの例については、「オートコンプリート」を参照してください。
大文字と小文字を区別しない、プレフィックス、で始まり、含むクエリを正規表現式を使用して実行する方法を示す例については、「$search の代わりに $text または $regex を使用する}」を参照してください。