マルチアナライザ
インデックス定義で multi
オブジェクトを使用して、 フィールドもインデックスする代替のアナライザを指定できます。 デフォルトのアナライザに加えて代替のアナライザを使用してフィールドをインデックス化すると、デフォルトまたは代替のアナライザのいずれかを使用してコレクションを検索できます。 このページでは、 multi
を使用してインデックス定義で代替アナライザを指定する方法を説明します。 代替アナライザによる検索の詳細については、「クエリ パスを構築する 」を参照してください。
制限
multi
パス オプションは、 string 型のフィールドでのみ使用できます。
Atlas Search は、 multi
オブジェクトの複数のレイヤーのネストをサポートしていません。
例
次のインデックス定義の例では、 standard
アナライザを使用して、 sample_mflix.movies
コレクションのtitle
フィールドのインデックスを指定します。 インデックス定義では、 title
フィールドの代替アナライザとして、 keywordAnalyzer
という名前のキーワード アナライザも指定されています。 キーワード アナライザはフィールド全体を単一の用語としてインデックス化するため、検索用語と指定されたフィールドが完全に一致する場合にのみ結果が返されます。
クラスターに コレクションをロードした場合は、Atlas UI のビジュアル エディターまたは JSONエディターを使用してサンプル インデックスを作成できます。 ご希望の構成方法を選択したら、データベースとコレクションを選択します。
[ Refine Your Indexをクリックしてインデックスを構成します。
Field Mappingsセクションで、 Add FieldをクリックしてAdd Field Mappingウィンドウを開きます。
Field Nameドロップダウンから
title
を選択します。[ Data Type String選択されていない場合は選択します。
String Propertiesを展開し、次の変更を加えます。
インデックスアナライザ
まだ選択されていない場合は、ドロップダウンから [
lucene.standard
] を選択します。searchAnalyzer
まだ選択されていない場合は、ドロップダウンから [
lucene.standard
] を選択します。インデックス オプション
デフォルトの
offsets
を使用します。Store
デフォルトの
true
を使用します。上記を無視
デフォルト設定のままにしてください。
基準
デフォルトの
include
を使用します。[ Add Multi Fieldをクリックして、
title
フィールドに別のアナライザを構成します。Multi Field Nameフィールドに
keywordAnalyzer
と入力します。Multi Field Propertiesに次の変更を加えます。
インデックスアナライザ
まだ選択されていない場合は、ドロップダウンから [
lucene.keyword
] を選択します。searchAnalyzer
まだ選択されていない場合は、ドロップダウンから [
lucene.keyword
] を選択します。インデックス オプション
デフォルトの
offsets
を使用します。Store
デフォルトの
true
を使用します。上記を無視
デフォルト設定のままにしてください。
基準
デフォルトの
include
を使用します。[Add] をクリックします。
[Save Changes] をクリックします。
[Create Search Index] をクリックします。
デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。
1 { 2 "mappings": { 3 "dynamic": false, 4 "fields": { 5 "title": { 6 "type": "string", 7 "analyzer": "lucene.standard", 8 "multi": { 9 "keywordAnalyzer": { 10 "type": "string", 11 "analyzer": "lucene.keyword" 12 } 13 } 14 } 15 } 16 } 17 } [Next] をクリックします。
[Create Search Index] をクリックします。
次のクエリでは、 keywordAnalyzer
という名前の代替アナライザを使用して、string The
Count of Monte Cristo
の完全一致を検索します。
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "text": { 5 "query": "The Count of Monte Cristo", 6 "path": { "value": "title", "multi": "keywordAnalyzer" } 7 } 8 } 9 }, 10 { 11 "$project": { 12 "title": 1, 13 "year": 1, 14 "_id": 0 15 } 16 } 17 ])
{ "title" : "The Count of Monte Cristo", "year" : 1934 } { "title" : "The Count of Monte Cristo", "year" : 1954 } { "title" : "The Count of Monte Cristo", "year" : 1998 }
対照的に、 standard
アナライザを使用する同じクエリでは、タイトルにthe
、 Count
、 of
、またはMonte
、またはCristo
という単語が含まれるすべての映画が検索されます。
Atlas Search は、 アナライザ を使用して、結果内のドキュメントに対して次のトークン(検索可能なターム)を作成します。
タイトル | 標準アナライザ トークン | キーワード アナライザ トークン |
---|---|---|
|
|
|