Docs Menu
Docs Home
/ /

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

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

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

Tip

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

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

autocomplete タイプは、デフォルトでは動的マッピングに含まれていません。autocomplete タイプとしてフィールドをインデックスには、静的マッピングを使用するか、動的マッピングに autocomplete を含めるように typeSet を構成します。

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

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

type

string

必須

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

analyzer

string

任意

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

lucene.standard

maxGrams

整数

任意

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

注意

パフォーマンスを最適化するには、maxGrams の値を 15 以下に設定することをお勧めします。値が大きいと、インデックスのサイズが大きくなり、パフォーマンスに影響可能性があります。オートコンプリートに 15 文字を超える必要がある場合は、クエリを切り捨てないようにカスタムアナライザを構成することをお勧めします。

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
...

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演算子の詳細とクエリの例については、「オートコンプリート」を参照してください。

大文字と小文字を区別しない、プレフィックス、 で始まり、正規表現式を使用するクエリを含む方法を示す例については、「 正規表現クエリの代わりにMongoDB Search を使用する 」を参照してください。

戻る

配列

項目一覧