インデックス定義で multiオブジェクトを使用して、フィールドもインデックスする代替のアナライザを指定できます。デフォルト のアナライザに加えて代替のアナライザを使用してフィールドをインデックスと、デフォルトまたは代替のアナライザのいずれかを使用してコレクションを検索できます。このページでは、 multiを使用してインデックス定義で代替アナライザを指定する方法を説明します。
マルチアナライザの制限
multiパス オプションは、 string 型のフィールドでのみ使用できます。
MongoDB Search は、multi オブジェクトの複数のレイヤーをネストすることをサポートしていません。
例
The following examples demonstrate index definitions on the fields in the sample_mflix.movies collection. If you load the collection on your cluster, you can create the example indexes using the Visual Editor or the JSON Editor in the Atlas UI or using mongosh.
単一フィールドの例
次のインデックス定義の例では、title フィールドに standard アナライザーを使用してインデックスを指定します。インデックス定義には、title フィールドの代替アナライザーとして lucene.french アナライザーが指定されており、その名前は frenchAnalyzer です。
次のクエリは、frenchAnalyzer という名前の代替アナライザーを使用して、string liberte を検索します。
結果のドキュメントは、frenchAnalyzer がインデックス文字列 è Nous la Libertè とタームliberte の両方を基本単語 libert に縮小したため、一致します。 MongoDB Search では、発音区別記号が削除されないため、 standardアナライザを使用した検索ではこのドキュメントが返されません。各アナライザは、インデックスとクエリに対して次のトークン(検索可能なターム)を生成します。
analyzer | Index Tokens | クエリトークン |
|---|---|---|
標準アナライザ |
|
|
フランス語アナライザー |
|
|
複数フィールドの例
次のインデックス定義の例では、title フィールドと plot フィールドに対して standard アナライザーを使用したインデックスを指定します。インデックス定義では、titleフィールドとplotフィールドの代替アナライザーとして lucene.french も指定されています。
次のクエリは、frenchAnalyzer という名前の代替アナライザーを使用して、title フィールドと plot フィールドで revolution という string に一致するものを検索します。
結果に含まれるドキュメントには、title フィールドと plot フィールドの両方にクエリ用語が含まれています。各アナライザーは、結果内の各ドキュメントの title フィールドに対して、次のトークン(検索可能な用語)を生成します。
年 | analyzer | Index Tokens | クエリトークン |
2012 | 標準アナライザ |
|
|
1985 | 標準アナライザ |
|
|
2014 | 標準アナライザ |
|
|
1970 | 標準アナライザ |
|
|
1989 | 標準アナライザ |
|
|
結果の5番目のドキュメントでは、frenchAnalyzer が title フィールドの発音区別符号を削除して、ドキュメントをクエリ用語に一致させました。