キーワードアナライザ
keyword
アナライザは、string または string の配列をパラメータとして受け入れ、それらを単一のターム(トークン)としてインデックスします。 フィールドの完全一致のみが返されます。 すべてのテキストは元の文字大文字と小文字のままになります。
アナライザが組み込み静的 用に作成するトークンは、keyword
string AtlasUI 2}Visual Editor Refine Your Indexで確認できます。Index
Configurationsセクションには、インデックスで使用するアナライザを選択するためにView text
analysis of your selected index configurationを展開すると、 keyword
アナライザが作成するインデックスと検索トークンが表示されます。
重要
Atlas Search は、アナライザ トークンのサイズが 32766 バイトを超える string フィールドのインデックスを作成しません。キーワード アナライザを使用する場合は、32766 バイトを超える string フィールドのインデックスを作成しません。
例
次のインデックス定義の例では、 keyword
アナライザを使用して、付属のsample_mflix.moviesコレクションのtitle
フィールドにインデックスを指定します。 コレクションをクラスターにロードした場合は、Atlas UI ビジュアル エディターまたは JSONエディターを使用してサンプル インデックスを作成できます。 ご希望の構成方法を選択したら、データベースとコレクションを選択します。
インデックスを設定するには、 Refine Your Indexをクリックします。
Field Mappingsセクションで、 Add FieldをクリックしてAdd Field Mappingウィンドウを開きます。
[Customized Configuration] をクリックします。
Field Nameドロップダウンから
title
を選択します。[ Data Type String選択されていない場合は選択します。
String Propertiesを展開し、次の変更を加えます。
インデックスアナライザドロップダウンから [lucene.keyword
] を選択します。searchAnalyzerドロップダウンから [lucene.keyword
] を選択します。インデックス オプションデフォルトのoffsets
を使用します。Storeデフォルトのtrue
を使用します。上記を無視デフォルト設定のままにしてください。基準デフォルトのinclude
を使用します。[Add] をクリックします。
[Save Changes] をクリックします。
[Create Search Index] をクリックします。
デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。
{ "mappings": { "fields": { "title": { "type": "string", "analyzer": "lucene.keyword" } } } } [Next] をクリックします。
[Create Search Index] をクリックします。
次のクエリは、 title
フィールドでフレーズClass Action
を検索します。
db.movies.aggregate([ { "$search": { "text": { "query": "Class Action", "path": "title" } } }, { "$project": { "_id": 0, "title": 1 } } ])
[ { title: 'Class Action' } ]
Atlas Search がドキュメントを返すのは、 lucene.keyword
アナライザを使用して、クエリ用語Class
Action
と、フィールドのテキスト用に作成される単一トークンClass Action
が照合したためです。 対照的に、Atlas Search では、次のクエリの結果は返されません。
db.cases.aggregate([ { "$search": { "text": { "query": "action", "path": "title" } } } ])
コレクション内の多くのドキュメントには string action
が含まれていますが、 keyword
アナライザは、検索タームが フィールドのコンテンツ全体に完全に一致するドキュメントのみを照合します。 上記のクエリでは、 keyword
アナライザは結果を返しません。 ただし、標準アナライザまたはシンプルアナライザを使用してフィールドをインデックスすると、Atlas Search は結果内にタイトル フィールド値がClass
Action
であるドキュメントを含む複数のドキュメントを返します。これは、次のようなトークンを作成するためです。クエリ用語に一致します。
analyzer | 出力トークン | マッチ action | マッチ Class Action |
---|---|---|---|
キーワード アナライザ トークン | Class Action | X | ✓ |
標準アナライザ トークン | class , action | ✓ | ✓ |
簡易アナライザ トークン | class , action | ✓ | ✓ |