自己管理型配置でテキストインデックスのデフォルト言語を指定する
デフォルトでは、テキストインデックスの 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" } } )
詳細
複数言語のテキストを含むコレクションにテキストインデックスを作成するには、「自己管理型配置で複数言語を含むコレクションのテキストインデックスを作成する 」を参照してください。
その他のテキスト インデックス プロパティについては、「自己管理型配置のテキスト インデックス プロパティ 」を参照してください。