Docs Menu
Docs Home
/ /

マルチアナライザ

インデックス定義で multi オブジェクトを使用して、フィールドのインデックスを作成する代替アナライザを指定できます。デフォルトのアナライザに加えて代替アナライザでフィールドにインデックスを付けると、デフォルトまたは代替アナライザのどちらかでコレクションを検索できます。このページでは、multi を使用して インデックス定義に代替アナライザを指定する方法を示します。

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

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

次の例は、sample_mflix.moviesコレクション内のフィールドのインデックス定義を示しています。コレクションをクラスターにロードすると、ビジュアル エディターまたは Atlas UIの JSONエディター、または mongosh を使用して例インデックスを作成できます。


言語を選択 ドロップダウン メニューを使用して、このページの例のインターフェイスを設定します。


次のインデックス定義の例では、title フィールドに standard アナライザーを使用してインデックスを指定します。インデックス定義には、title フィールドの代替アナライザーとして lucene.french アナライザーが指定されており、その名前は frenchAnalyzer です。

  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フィールドにfrenchAnalyzerと入力します。

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

    インデックスアナライザ

    まだ選択されていない場合は、ドロップダウンから [ lucene.french ] を選択します。

    searchAnalyzer

    まだ選択されていない場合は、ドロップダウンから [ lucene.french ] を選択します。

    インデックス オプション

    デフォルトの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 "frenchAnalyzer": {
    10 "type": "string",
    11 "analyzer": "lucene.french"
    12 }
    13 }
    14 }
    15 }
    16 }
    17}
  2. [Next] をクリックします。

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

1db.movies.createSearchIndex(
2 "default",
3 {
4 "mappings": {
5 "dynamic": false,
6 "fields": {
7 "title": {
8 "type": "string",
9 "analyzer": "lucene.standard",
10 "multi": {
11 "frenchAnalyzer": {
12 "type": "string",
13 "analyzer": "lucene.french"
14 }
15 }
16 }
17 }
18 }
19 }
20)

次のクエリは、frenchAnalyzer という名前の代替アナライザーを使用して、string liberte を検索します。

  1. インデックスの Query ボタンをクリックします。

  2. クエリを編集するには、Edit Query をクリックします。

  3. クエリ バーをクリックし、データベースとコレクションを選択します。

  4. デフォルトのクエリを以下のように置き換え、Find をクリックします。

    [
    {
    "$search": {
    "text": {
    "query": "liberte",
    "path": { "value": "title", "multi": "frenchAnalyzer" }
    }
    }
    }
    ]
    SCORE: 4.9305267333984375 _id: "573a1392f29313caabcd9950"
    awards: Object
    cast: Array (4)
    countries: Array (1)
    directors: Array (1)
    fullplot: "A famous left-wing satirical comedy about two ex-convicts, one of whom…"
    genres: Array (2)
    imdb: Object
    languages: Array (1)
    lastupdated: "2015-08-21 00:02:36.330000000"
    num_mflix_comments: 1
    plot: "A famous left-wing satirical comedy about two ex-convicts, one of whom…"
    poster: "https://m.media-amazon.com/images/M/MV5BODg0ODAzNTItM2M4ZC00NGYxLWIzMm…"
    rated: "APPROVED"
    released: 1931-12-31T00:00:00.000+00:00
    runtime: 97
    title: "è Nous la Libertè"
    tomatoes: Object
    type: "movie"
    writers: Array (1)
    year: 1931
1db.movies.aggregate([
2 {
3 "$search": {
4 "text": {
5 "query": "liberte",
6 "path": { "value": "title", "multi": "frenchAnalyzer" }
7 }
8 }
9 },
10 {
11 "$project": {
12 "title": 1,
13 "year": 1,
14 "_id": 0
15 }
16 }
17])
[ { title: 'è Nous la Libertè', year: 1931 } ]

結果のドキュメントは、frenchAnalyzer がインデックス文字列 è Nous la Libertè とタームliberte の両方を基本単語 libert に縮小したため、一致します。 MongoDB Search では、発音区別記号が削除されないため、 standardアナライザを使用した検索ではこのドキュメントが返されません。各アナライザは、インデックスとクエリに対して次のトークン(検索可能なターム)を生成します。

analyzer
Index Tokens
クエリトークン

標準アナライザ

è, nous, la, libertè

libertè

フランス語アナライザー

è, libert

libert

次のインデックス定義の例では、title フィールドと plot フィールドに対して standard アナライザーを使用したインデックスを指定します。インデックス定義では、titleフィールドとplotフィールドの代替アナライザーとして lucene.french も指定されています。

  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フィールドにfrenchAnalyzerと入力します。

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

    インデックスアナライザ

    まだ選択されていない場合は、ドロップダウンから [ lucene.french ] を選択します。

    searchAnalyzer

    まだ選択されていない場合は、ドロップダウンから [ lucene.french ] を選択します。

    インデックス オプション

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

    Store

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

    上記を無視

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

    基準

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

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

  10. Add Field MappingをクリックするとAdd Field Mappingウィンドウが開きます。

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

  12. 4 から 9 までのステップを繰り返します。

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

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

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

    1{
    2 "mappings": {
    3 "dynamic": false,
    4 "fields": {
    5 "title": {
    6 "type": "string",
    7 "analyzer": "lucene.standard",
    8 "multi": {
    9 "frenchAnalyzer": {
    10 "type": "string",
    11 "analyzer": "lucene.french"
    12 }
    13 }
    14 },
    15 "plot": {
    16 "type": "string",
    17 "analyzer": "lucene.standard",
    18 "multi": {
    19 "frenchAnalyzer": {
    20 "type": "string",
    21 "analyzer": "lucene.french"
    22 }
    23 }
    24 }
    25 }
    26 }
    27}
  2. [Next] をクリックします。

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

1db.movies.createSearchIndex(
2 "default",
3 {
4 "mappings": {
5 "dynamic": false,
6 "fields": {
7 "title": {
8 "type": "string",
9 "analyzer": "lucene.standard",
10 "multi": {
11 "frenchAnalyzer": {
12 "type": "string",
13 "analyzer": "lucene.french"
14 }
15 }
16 },
17 "plot": {
18 "type": "string",
19 "analyzer": "lucene.standard",
20 "multi": {
21 "frenchAnalyzer": {
22 "type": "string",
23 "analyzer": "lucene.french"
24 }
25 }
26 }
27 }
28 }
29 }
30)

次のクエリは、frenchAnalyzer という名前の代替アナライザーを使用して、title フィールドと plot フィールドで revolution という string に一致するものを検索します。

  1. インデックスの Query ボタンをクリックします。

  2. クエリを編集するには、Edit Query をクリックします。

  3. クエリ バーをクリックし、データベースとコレクションを選択します。

  4. デフォルトのクエリを以下のように置き換え、Find をクリックします。

    [
    {
    "$search": {
    "text": {
    "query": "revolution",
    "path": [
    "title", "plot",
    { "value": "title", "multi": "frenchAnalyzer" },
    { "value": "plot", "multi": "frenchAnalyzer" }
    ]
    }
    }
    }
    ]
    SCORE: 14.07243537902832 _id: "573a13dbf29313caabdaf845"
    awards: Object
    cast: Array (4)
    countries: Array (11)
    directors: Array (1)
    fullplot: "REVOLUTION is a film about changing the world, going for it, taking a …"
    genres: Array (3)
    imdb: Object
    languages: Array (1)
    lastupdated: "2015-07-09 11:14:18.300000000"
    metacritic: 53
    num_mflix_comments: 0
    plot: "REVOLUTION is a film about changing the world, going for it, taking a …"
    poster: "https://m.media-amazon.com/images/M/MV5BMTc1NDIxNjc0N15BMl5BanBnXkFtZT…"
    rated: "PG"
    released: 2015-04-22T00:00:00.000+00:00
    runtime: 85
    title: "Revolution"
    tomatoes: Object
    type: "movie"
    writers: Array (1)
    year: 2012
    SCORE: 13.935744285583496 _id: "573a1398f29313caabce9ae2"
    awards: Object
    cast: Array (4)
    countries: Array (2)
    directors: Array (1)
    fullplot: "New York trapper Tom Dobb becomes an unwilling participant in the Amer…"
    genres: Array (3)
    imdb: Object
    languages: Array (1)
    lastupdated: "2015-08-14 00:46:28.990000000"
    num_mflix_comments: 1
    plot: "New York trapper Tom Dobb becomes an unwilling participant in the Amer…"
    poster: "https://m.media-amazon.com/images/M/MV5BZmZhMmEyNjktZTgxZC00NzQyLTkyZD…"
    rated: "PG-13"
    released: 1985-12-25T00:00:00.000+00:00
    runtime: 126
    title: "Revolution"
    type: "movie"
    writers: Array (1)
    year: 1985
    SCORE: 11.623137474060059 _id: "573a13f5f29313caabde37d4"
    awards: Object
    cast: Array (4)
    countries: Array (1)
    directors: Array (1)
    fullplot: "Together with five Soviet avant-garde artists, hero of the Russian rev…"
    genres: Array (1)
    imdb: Object
    languages: Array (1)
    lastupdated: "2015-09-15 03:33:53.177000000"
    num_mflix_comments: 1
    plot: "Together with five Soviet avant-garde artists, hero of the Russian rev…"
    released: 2014-11-18T00:00:00.000+00:00
    runtime: 113
    title: "Angels of Revolution"
    type: "movie"
    writers: Array (3)
    year: 2014
    SCORE: 11.210482597351074 _id: "573a1396f29313caabce4248"
    awards: Object
    cast: Array (4)
    countries: Array (1)
    directors: Array (1)
    fullplot: "An account of the adventures of two sets of identical twins, badly scr…"
    genres: Array (2)
    imdb: Object
    languages: Array (1)
    lastupdated: "2015-09-05 00:50:08.277000000"
    num_mflix_comments: 0
    plot: "Two mismatched sets of identical twins - one aristocrat, one peasant -…"
    poster: "https://m.media-amazon.com/images/M/MV5BODM2MzE3NmMtNmE2ZS00OGI2LWI5NT…"
    rated: "M"
    released: 1970-08-14T00:00:00.000+00:00
    runtime: 90
    title: "Start the Revolution Without Me"
    tomatoes: Object
    type: "movie"
    writers: Array (2)
    year: 1970
    SCORE: 8.332647323608398 _id: "573a1398f29313caabceba10"
    awards: Object
    cast: Array (4)
    countries: Array (5)
    directors: Array (2)
    fullplot: "A history of the French Revolution from the decision of the king to co…"
    genres: Array (3)
    imdb: Object
    languages: Array (2)
    lastupdated: "2015-09-05 00:30:36.643000000"
    num_mflix_comments: 0
    plot: "A history of the French Revolution from the decision of the king to co…"
    released: 1989-10-25T00:00:00.000+00:00
    runtime: 360
    title: "La rèvolution franèaise"
    tomatoes: Object
    type: "movie"
    writers: Array (5)
    year: 1989
    SCORE: 7.699893474578857 _id: "573a13a4f29313caabd10215"
    awards: Object
    cast: Array (4)
    countries: Array (1)
    directors: Array (1)
    genres: Array (1)
    imdb: Object
    languages: Array (1)
    lastupdated: "2015-09-10 17:19:25.853000000"
    metacritic: 63
    num_mflix_comments: 0
    poster: "https://m.media-amazon.com/images/M/MV5BMTkxOTUzNjg0Ml5BMl5BanBnXkFtZT…"
    released: 2001-04-22T00:00:00.000+00:00
    runtime: 90
    title: "Revolution #9"
    tomatoes: Object
    type: "movie"
    writers: Array (1)
    year: 2001
    SCORE: 6.8415961265563965 _id: "573a13a0f29313caabd05edb"
    awards: Object
    cast: Array (4)
    countries: Array (1)
    directors: Array (1)
    fullplot: "Friendship and betrayal between two poets during the French Revolution…"
    genres: Array (2)
    imdb: Object
    languages: Array (1)
    lastupdated: "2015-04-17 01:56:58.940000000"
    metacritic: 60
    num_mflix_comments: 0
    plot: "Friendship and betrayal between two poets during the French Revolution…"
    poster: "https://m.media-amazon.com/images/M/MV5BMTQ0Nzc0OTkwM15BMl5BanBnXkFtZT…"
    rated: "PG-13"
    released: 2001-04-18T00:00:00.000+00:00
    runtime: 124
    title: "Pandaemonium"
    tomatoes: Object
    type: "movie"
    writers: Array (1)
    year: 2000
    SCORE: 6.7074995040893555 _id: "573a1397f29313caabce8972"
    awards: Object
    cast: Array (4)
    countries: Array (1)
    directors: Array (1)
    fullplot: "Set ten years after the most peaceful revolution in United States hist…"
    genres: Array (3)
    imdb: Object
    languages: Array (1)
    lastupdated: "2015-09-10 17:14:53.427000000"
    num_mflix_comments: 1
    plot: "Set ten years after the most peaceful revolution in United States hist…"
    poster: "https://m.media-amazon.com/images/M/MV5BYTE5MGNhN2QtMTNhYy00MDQ1LTgzOT…"
    released: 1983-11-03T00:00:00.000+00:00
    runtime: 80
    title: "Born in Flames"
    tomatoes: Object
    type: "movie"
    writers: Array (2)
    year: 1983
    SCORE: 6.615457057952881 _id: "573a1395f29313caabce1c90"
    awards: Object
    cast: Array (4)
    countries: Array (1)
    directors: Array (1)
    fullplot: "The study of a youth on the edge of adulthood and his aunt, ten years …"
    genres: Array (2)
    imdb: Object
    languages: Array (1)
    lastupdated: "2015-08-21 00:16:07.580000000"
    num_mflix_comments: 0
    plot: "The study of a youth on the edge of adulthood and his aunt, ten years …"
    poster: "https://m.media-amazon.com/images/M/MV5BMmJjOGRjNWMtOGE5Ni00YzYwLThkM2…"
    released: 1964-05-12T00:00:00.000+00:00
    runtime: 105
    title: "Before the Revolution"
    tomatoes: Object
    type: "movie"
    writers: Array (2)
    year: 1964
    SCORE: 6.615457057952881 _id: "573a13cef29313caabd86ecc"
    awards: Object
    cast: Array (1)
    countries: Array (1)
    directors: Array (1)
    fullplot: "Through intimate interviews, provocative art, and rare, historical fil…"
    genres: Array (1)
    imdb: Object
    languages: Array (1)
    lastupdated: "2015-04-02 00:54:39.997000000"
    metacritic: 70
    num_mflix_comments: 1
    plot: "Through intimate interviews, provocative art, and rare, historical fil…"
    poster: "https://m.media-amazon.com/images/M/MV5BMjE1MDU1MDA2Nl5BMl5BanBnXkFtZT…"
    released: 2011-06-01T00:00:00.000+00:00
    runtime: 83
    title: "!Women Art Revolution"
    tomatoes: Object
    type: "movie"
    year: 2010
1db.movies.aggregate([
2 {
3 "$search": {
4 "text": {
5 "query": "revolution",
6 "path": ["title", "plot",
7 { "value": "title", "multi": "frenchAnalyzer" },
8 { "value": "plot", "multi": "frenchAnalyzer" }
9 ]
10 }
11 }
12 },
13 {
14 "$limit": 5
15 },
16 {
17 "$project": {
18 "title": 1,
19 "plot": 1,
20 "year": 1,
21 "_id": 0
22 }
23 }
24])
[
{
year: 2012,
plot: 'REVOLUTION is a film about changing the world, going for it, taking a stand, and fighting for something. A true-life adventure following Director, Rob Stewart (SHARKWATER) over four years ...',
title: 'Revolution'
},
{
plot: 'New York trapper Tom Dobb becomes an unwilling participant in the American Revolution after his son Ned is drafted into the Army by the villainous Sergeant Major Peasy. Tom attempts to find...',
title: 'Revolution',
year: 1985
},
{
plot: "Together with five Soviet avant-garde artists, hero of the Russian revolution Polina Schneider travels to Siberia to 'civilize' the native Khanty and Nenets tribes, for whom interaction ...",
title: 'Angels of Revolution',
year: 2014
},
{
plot: 'Two mismatched sets of identical twins - one aristocrat, one peasant - mistakenly exchange identities on the eve of the French Revolution.',
title: 'Start the Revolution Without Me',
year: 1970
},
{
plot: "A history of the French Revolution from the decision of the king to convene the Etats-Generaux in 1789 in order to deal with France's debt problem. The first part of the movie tells the ...",
title: 'La rèvolution franèaise',
year: 1989
}
]

結果に含まれるドキュメントには、title フィールドと plot フィールドの両方にクエリ用語が含まれています。各アナライザーは、結果内の各ドキュメントの title フィールドに対して、次のトークン(検索可能な用語)を生成します。

analyzer

Index Tokens

クエリトークン

2012

Standard Analyzer
French Analyzer
revolution
revolution
revolution
revolution

1985

Standard Analyzer
French Analyzer
revolution
revolution
revolution
revolution

2014

Standard Analyzer
French Analyzer
angels, of, revolution
angels, of, revolution
revolution
revolution

1970

Standard Analyzer
French Analyzer
start, the, revolution, without, me
start, the, revolution, without
revolution
revolution

1989

Standard Analyzer
French Analyzer
la, rèvolution, franèaise
revolution, franeais
revolution
revolution

結果の5番目のドキュメントでは、frenchAnalyzertitle フィールドの発音区別符号を削除して、ドキュメントをクエリ用語に一致させました。

戻る

言語

項目一覧