デフォルトでは、テキストインデックスの default_languageはenglishです。 英語以外のテキスト検索クエリのパフォーマンスを向上させるには、テキスト インデックスに関連付けられた別のデフォルト言語を指定できます。
インデックスされたデータに関連付けられたデフォルト言語によって、接尾辞の語幹ルールが決まります。 デフォルト言語は、どの言語固有のストップワード(たとえば、 the 、 an 、 a 、 andなど)がインデックスに作成されないかも決定します。
別の言語を指定するには、テキスト インデックスの作成時にdefault_languageオプションを使用します。 テキスト インデックス作成に使用できる言語を確認するには、 自己管理型配置でのテキスト検索言語を参照してください。 操作は次のプロトタイプのようになります。
db.<collection>.createIndex( { <field>: "text" }, { default_language: <language> } )
none の値に default_language を指定すると、テキストインデックスはストップワードを含むフィールド内の各単語を解析し、接尾辞の語幹を無視します。
始める前に
スペイン語のテキスト フィールドを持つ次のドキュメントを含むquotesコレクションを作成します。
db.quotes.insertMany( [ { _id: 1, quote : "La suerte protege a los audaces." }, { _id: 2, quote: "Nada hay más surrealista que la realidad." }, { _id: 3, quote: "Es este un puñal que veo delante de mí?" }, { _id: 4, quote: "Nunca dejes que la realidad te estropee una buena historia." } ] )
手順
次の操作では、 quoteフィールドにテキスト インデックスを作成し、 default_languageをspanishに設定します。
db.quotes.createIndex( { quote: "text" }, { default_language: "spanish" } )
結果
結果のインデックスは、スペイン語の接尾辞語幹ルールを使用してquoteフィールドでのテキスト検索クエリをサポートします。 たとえば、次のクエリは、 quoteフィールドでキーワードpunalを検索します。
db.quotes.find( { $text: { $search: "punal" } } )
出力:
[ { _id: 3, quote: "Es este un puñal que veo delante de mí?" } ]
$searchの値はpunalに設定されていますが、テキスト インデックスは発音区別符号を区別しないため、クエリはpuñalという単語を含むドキュメントを返します。
インデックスは言語固有のストップワードも無視します。 たとえば、 _id: 2を含むドキュメントにはhayという単語が含まれていますが、次のクエリではドキュメントは返されません。 hayはスペイン語のストップワードとして分類されています。つまり、テキスト インデックスには含まれていません。
db.quotes.find( { $text: { $search: "hay" } } )
詳細
複数言語のテキストを含むコレクションにテキストインデックスを作成するには、自己管理型配置で複数言語のテキスト インデックスを作成する を参照してください。
その他のテキスト インデックス プロパティについては、「自己管理型配置のテキスト インデックス プロパティ 」を参照してください。