keyword
アナライザは、string または string の配列をパラメータとして受け入れ、それらを単一のターム(トークン)としてインデックスします。 フィールドの完全一致のみが返されます。 すべてのテキストは元の文字大文字と小文字のままになります。
Atlas UI Visual Editor でインデックスを作成または編集する際、keyword
アナライザが組み込みのサンプルドキュメントとクエリ文字列に対して生成するトークンを確認できます。Refine Your Index を選択すると、Atlas UI にはIndex Configurations セクション内に「View text analysis of your selected index configuration」というタイトルのセクションが表示されます。このセクションを展開すると、Atlas UI には、keyword
アナライザが各サンプル文字列に対して生成するインデックスと検索トークンが表示されます。
重要
Atlas Search は、アナライザ トークンのサイズが 32766 バイトを超える string フィールドのインデックスを作成しません。キーワード アナライザを使用する場合は、32766 バイトを超える string フィールドのインデックスを作成しません。
例
次のインデックス定義の例では、sample_mflix.movies コレクションの title
フィールドに keyword
アナライザを使用してインデックスを指定します。この例に従うには、サンプルデータをクラスターに読み込み、Atlas UI のCreate a Search Indexページに移動し、「Atlas Search インデックスの作成」チュートリアルの手順に従ってください。次に、minutes
コレクションをデータソースとして選択し、例の手順に従って Visual Editor または JSON editor にインデックスを作成します。
インデックスを設定するには、 Refine Your Indexをクリックします。
Index Configurations セクションで、Dynamic Mapping を off に切り替えます。
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 |
---|---|---|---|
キーワード アナライザ トークン |
| X | ✓ |
標準アナライザ トークン |
| ✓ | ✓ |
簡易アナライザ トークン |
| ✓ | ✓ |