Docs Menu
Docs Home
/
Atlas
/ / / /

キーワードアナライザ

keywordアナライザは、string または string の配列をパラメータとして受け入れ、それらを単一のターム(トークン)としてインデックスします。 フィールドの完全一致のみが返されます。 すべてのテキストは元の文字大文字と小文字のままになります。

Tip

完全一致を行うには、 keywordアナライザを使用する代わりに、フィールドを Atlas Search トークンタイプとしてインデックス化し、等価演算子を使用してフィールドを検索します。

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 にインデックスを作成します。

  1. インデックスを設定するには、 Refine Your Indexをクリックします。

  2. Index Configurations セクションで、Dynamic Mappingoff に切り替えます。

  3. Field Mappingsセクションで、 Add FieldをクリックしてAdd Field Mappingウィンドウを開きます。

  4. [Customized Configuration] をクリックします。

  5. Field Nameドロップダウンからtitleを選択します。

  6. [ Data Type String選択されていない場合は選択します。

  7. String Propertiesを展開し、次の変更を加えます。

    インデックスアナライザ

    ドロップダウンから [lucene.keyword] を選択します。

    searchAnalyzer

    ドロップダウンから [lucene.keyword] を選択します。

    インデックス オプション

    デフォルトのoffsetsを使用します。

    Store

    デフォルトのtrueを使用します。

    上記を無視

    デフォルト設定のままにしてください。

    基準

    デフォルトのincludeを使用します。

  8. [Add] をクリックします。

  9. [Save Changes] をクリックします。

  10. [Create Search Index] をクリックします。

  1. デフォルトのインデックス定義を、以下のインデックス定義で置き換えます。

    {
    "mappings": {
    "fields": {
    "title": {
    "type": "string",
    "analyzer": "lucene.keyword"
    }
    }
    }
    }
  2. [Next] をクリックします。

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

戻る

Whitespace