オートコンプリート用にフィールドをインデックスする方法
Atlas Search autocomplete
タイプを使用して、オートコンプリート用に string フィールド内のテキスト値にインデックスを作成できます。 オートコンプリート演算子を使用して、autocomplete
タイプとしてインデックス付けされたフィールドをクエリできます。
また、 autocomplete
型を使用してインデックスを作成することもできます。
値が文字列の配列であるフィールド。 詳細については、 配列の要素にインデックスを付ける方法 を参照してください。
stringembeddedDocuments 型としてインデックス付けされたドキュメントの配列内の フィールド。
Tip
オートコンプリート演算子を使用して Atlas Search クエリを実行する必要がある場合、このインデックスの構築に時間がかかる場合があります。 あるいは、 autocomplete
タイプのみを含む別のインデックスを作成して、インデックスのビルド中に他のインデックスやクエリへの影響を軽減することもできます。
詳しくは、「 Atlas Searchインデックスのパフォーマンスに関する考慮事項 」を参照してください。
Atlas Search は、 autocomplete
タイプのフィールドを動的にインデックスしません。 フィールドのインデックスを作成するには、 静的マッピング を使用する 必要 があります。autocomplete
Atlas UI のビジュアル エディターまたはJSON エディターを使用して、 autocomplete
型のフィールドをインデックスできます。
autocomplete
型のインデックスを定義する
autocomplete
タイプのインデックスを定義するには、Atlas UI で希望する構成方法を選択し、データベースとコレクションを選択します。
[ Refine Your Indexをクリックしてインデックスを構成します。
Field Mappingsセクションで、 Add FieldをクリックしてAdd Field Mappingウィンドウを開きます。
[Customized Configuration] をクリックします。
Field Nameドロップダウンからインデックスするフィールドを選択します。
注意
フィールド名の先頭にドル記号(
$
)が含まれるフィールドにはインデックスを付けられません。email
またはurl
というタームを含むフィールド名では、Atlas Search Visual Editorでは、メールアドレスまたは URL 値のインデックス作成に、 uaxUrlEmail トークナイザを含むカスタムアナライザを使用することを推奨しています。 Create urlEmailAnalyzerをクリックしてカスタムアナライザを作成し、フィールドのAutocomplete Propertiesに適用します。Data Typeドロップダウンをクリックし、Autocomplete を選択します。
(任意) フィールドのToken Propertiesを展開して構成します。 詳しくは、「
token
フィールド プロパティの構成 」を参照してください。[Add] をクリックします。
以下は、autocomplete
タイプの JSON 構文です。デフォルトのインデックス定義を以下のように置き換えます。フィールドの詳細については、「 フィールド プロパティ」を参照してください。
1 { 2 "mappings": { 3 "dynamic": true|false, 4 "fields": { 5 "<field-name>": { 6 "type": "autocomplete", 7 "analyzer": "<lucene-analyzer>", 8 "tokenization": "edgeGram|rightEdgeGram|nGram", 9 "minGrams": <2>, 10 "maxGrams": <15>, 11 "foldDiacritics": true|false 12 } 13 } 14 } 15 }
autocomplete
フィールド プロパティを構成する
Atlas Search autocomplete
型は次のパラメータを取ります。
オプション | タイプ | 必要性 | 説明 | default | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| string | 必須 | このフィールド型を識別する、人間が判読できるラベル。 値は string である必要があります。 | |||||||||||||||||||||||||||||||||||||||||||||||||
| string | 任意 |
| |||||||||||||||||||||||||||||||||||||||||||||||||
| 整数 | 任意 | インデックス シーケンスあたりの最大文字数。 この値は、インデックス トークンの文字長を制限します。 |
| ||||||||||||||||||||||||||||||||||||||||||||||||
| 整数 | 任意 | インデックス シーケンスあたりの最小文字数。 最小値として |
| ||||||||||||||||||||||||||||||||||||||||||||||||
| 列挙 | 任意 | オートコンプリート用にフィールドをインデックスするときに使用するトークン化戦略。 値は次のいずれかになります。
指定されたトークン化戦略では、Atlas Search は次のプロセスを適用して、連続したトークンを発行する前に連結します。 このプロセスは「照合」と呼ばれることもあります。 Atlas Search は、長さが
|
| ||||||||||||||||||||||||||||||||||||||||||||||||
| ブール値 | 任意 | インデックス付きテキストに発音区別符号を含めるか削除するかを示すフラグ。 値は次のいずれかになります。
|
|
autocomplete
型の例を試す
次のインデックス定義の例では、 sample_mflix.moviesコレクションを使用します。 サンプル データがすでにクラスターにロードされている場合は、Atlas UI のビジュアル エディターまたはJSONエディターを使用してインデックスを構成できます。 ご希望の構成方法を選択したら、データベースとコレクションを選択し、インデックスを微調整してフィールド マッピングを追加します。
次のインデックス定義の例では、 title
フィールドのみをautocomplete
タイプとしてインデックス化し、オートコンプリート演算子を使用してそのフィールドに対する入力しながら検索するクエリをサポートします。 インデックス定義では、次の項目も指定します。
標準アナライザを使用して、単語境界に基づいてテキスト値をタームに分割します。
edgeGram
トークン化戦略を使用して、 という単語の左側から始まる文字をインデックス化します。インデックス シーケンスごとに少なくとも
3
文字をインデックスします。インデックス付きシーケンスごとに最大
5
文字をインデックス化します。インデックスとクエリ テキストに発音区別符号を含めます。
Add Field Mappingウィンドウで、 Field Nameドロップダウンからtitleを選択します。
Data Typeドロップダウンをクリックし、Autocomplete を選択します。
Autocomplete Propertiesに次の変更を加えます。
Max Grams
値を
5
に設定します。最小表示
値を
3
に設定します。トークン化
ドロップダウンから [
edgeGram
] を選択します。フォールド発音区別符号
ドロップダウンから [
false
] を選択します。[Add] をクリックします。
デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。
1 { 2 "mappings": { 3 "dynamic": false, 4 "fields": { 5 "title": { 6 "type": "autocomplete", 7 "analyzer": "lucene.standard", 8 "tokenization": "edgeGram", 9 "minGrams": 3, 10 "maxGrams": 5, 11 "foldDiacritics": false 12 } 13 } 14 } 15 }
次のインデックス定義の例では、 sample_mflix.moviesコレクションを使用します。 サンプル データがすでにクラスターにロードされている場合は、Atlas UI のビジュアル エディターまたはJSONエディターを使用してインデックスを構成できます。 ご希望の構成方法を選択したら、データベースとコレクションを選択し、インデックスを微調整してフィールド マッピングを追加します。
配列で他の型を指定することで、フィールドを他の型としてインデックスすることもできます。 たとえば、次のインデックス定義は、 title
フィールドを次のタイプとしてインデックス化します。
autocomplete
オートコンプリート演算子を使用するクエリのオートコンプリートをサポートするタイプ。string
タイプ は、 text 、 phraseなどの演算子を使用したテキスト検索をサポートするために使用されます。
Add Field Mappingウィンドウで、 Field Nameドロップダウンからtitleを選択します。
Data Typeドロップダウンをクリックし、Autocomplete を選択します。
Autocomplete Propertiesに次の変更を加えます。
Max Grams
値を
15
に設定します。最小表示
値を
2
に設定します。トークン化
ドロップダウンから [
edgeGram
] を選択します。フォールド発音区別符号
ドロップダウンから [
false
] を選択します。[Add] をクリックします。
手順bからdまでを繰り返します。
Data Typeドロップダウンをクリックし、String を選択します。
デフォルトのString Properties設定を受け入れ、 Addをクリックします。
デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。
1 { 2 "mappings": { 3 "dynamic": true|false, 4 "fields": { 5 "title": [ 6 { 7 "type": "autocomplete", 8 "analyzer": "lucene.standard", 9 "tokenization": "edgeGram", 10 "minGrams": 2, 11 "maxGrams": 15, 12 "foldDiacritics": false 13 }, 14 { 15 "type": "string" 16 } 17 ] 18 } 19 } 20 }
次のインデックス定義の例では、 sample_mflix.usersコレクションを使用します。 サンプル データがすでにクラスターにロードされている場合は、Atlas UI のビジュアル エディターまたはJSONエディターを使用してインデックスを構成できます。 ご希望の構成方法を選択したら、データベースとコレクションを選択し、インデックスを微調整してフィールド マッピングを追加します。
次のインデックス定義の例では、 email
フィールドのみをautocomplete
タイプとしてインデックス化し、オートコンプリート演算子を使用してそのフィールドに対する入力しながら検索するクエリをサポートします。 インデックス定義では、以下を指定します。
キーワードアナライザ を使用して、string または string の配列をパラメータとして受け入れ、それらを単一のターム(トークン)としてインデックスします。
nGram トークナイザを使用して、テキストを指定されたサイズのチャンク、つまり「n グラム」にトークン化します。
インデックス シーケンスごとに少なくとも
3
文字をインデックスします。インデックス付きシーケンスごとに最大
15
文字をインデックス化します。インデックスとクエリ テキストに発音区別符号を含めます。
また、 uaxUrlEmail
トークナイザを使用してURLとメールアドレスをトークン化することもできます。 詳しくは、「 uaxUrlEmail 」を参照してください。
Add Field Mappingウィンドウで、 Field Nameドロップダウンからemailを選択します。
Data Typeドロップダウンをクリックし、Autocomplete を選択します。
Autocomplete Propertiesに次の変更を加えます。
analyzer
ドロップダウンから [lucene.keyword] を選択します。
Max Grams
値を
15
に設定します。最小表示
値を
3
に設定します。トークン化
ドロップダウンから [nGram] を選択します。
フォールド発音区別符号
ドロップダウンから [
false
] を選択します。[Add] をクリックします。
デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。
1 { 2 "mappings": { 3 "dynamic": true, 4 "fields": { 5 "email": { 6 "type": "autocomplete", 7 "analyzer": "lucene.keyword", 8 "tokenization": "nGram", 9 "minGrams": 3, 10 "maxGrams": 15, 11 "foldDiacritics": false 12 } 13 } 14 } 15 }