Docs Menu
Docs Home
/
MongoDB Atlas
/ / / /

マルチアナライザ

項目一覧

  • 制限

インデックス定義で multiオブジェクトを使用して、 フィールドもインデックスする代替のアナライザを指定できます。 デフォルトのアナライザに加えて代替のアナライザを使用してフィールドをインデックス化すると、デフォルトまたは代替のアナライザのいずれかを使用してコレクションを検索できます。 このページでは、 multiを使用してインデックス定義で代替アナライザを指定する方法を説明します。 代替アナライザによる検索の詳細については、「クエリ パスを構築する 」を参照してください。

multiパス オプションは、 string 型のフィールドでのみ使用できます。

Atlas Search は、 multiオブジェクトの複数のレイヤーのネストをサポートしていません。

次のインデックス定義の例では、 standardアナライザを使用して、 sample_mflix.moviesコレクションのtitleフィールドのインデックスを指定します。 インデックス定義では、 titleフィールドの代替アナライザとして、 keywordAnalyzerという名前のキーワード アナライザも指定されています。 キーワード アナライザはフィールド全体を単一の用語としてインデックス化するため、検索用語と指定されたフィールドが完全に一致する場合にのみ結果が返されます。

クラスターに コレクションをロードした場合は、Atlas UI のビジュアル エディターまたは JSONエディターを使用してサンプル インデックスを作成できます。 ご希望の構成方法を選択したら、データベースとコレクションを選択します。

  1. [ Refine Your Indexをクリックしてインデックスを構成します。

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

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

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

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

    インデックスアナライザ
    まだ選択されていない場合は、ドロップダウンから [ lucene.standard ] を選択します。
    searchAnalyzer
    まだ選択されていない場合は、ドロップダウンから [ lucene.standard ] を選択します。
    インデックス オプション
    デフォルトのoffsetsを使用します。
    Store
    デフォルトのtrueを使用します。
    上記を無視
    デフォルト設定のままにしてください。
    基準
    デフォルトのincludeを使用します。
  6. [ Add Multi Fieldをクリックして、 titleフィールドに別のアナライザを構成します。

  7. Multi Field NameフィールドにkeywordAnalyzerと入力します。

  8. Multi Field Propertiesに次の変更を加えます。

    インデックスアナライザ
    まだ選択されていない場合は、ドロップダウンから [ lucene.keyword ] を選択します。
    searchAnalyzer
    まだ選択されていない場合は、ドロップダウンから [ lucene.keyword ] を選択します。
    インデックス オプション
    デフォルトのoffsetsを使用します。
    Store
    デフォルトのtrueを使用します。
    上記を無視
    デフォルト設定のままにしてください。
    基準
    デフォルトのincludeを使用します。
  9. [Add] をクリックします。

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

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

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

    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}
  2. [Next] をクリックします。

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

次のクエリでは、 keywordAnalyzerという名前の代替アナライザを使用して、string The Count of Monte Cristoの完全一致を検索します。

1db.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アナライザを使用する同じクエリでは、タイトルにtheCountof 、またはMonte 、またはCristoという単語が含まれるすべての映画が検索されます。

Atlas Search は、 アナライザ を使用して、結果内のドキュメントに対して次のトークン(検索可能なターム)を作成します。

タイトル
標準アナライザ トークン
キーワード アナライザ トークン
The Count of Monte Cristo
the, count, of, monte, cristo
The Count of Monte Cristo

戻る

言語

項目一覧