Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

自己管理型MongoDBのテキストインデックスの言語の指定

注意

MongoDB Search は、より多くの言語アナライザのサポートを含む高度な全文検索機能を提供します。テキスト インデックスと $text 演算子の代わりに、MongoDB Search インデックス$searchステージを使用することを推奨します。

デフォルトでは 、テキスト インデックスの default_languageenglish です。非英語の $text クエリのパフォーマンスを向上させるには、 テキストインデックスに関連付けられた別のデフォルト言語を指定できます。

インデックスされたデータに関連付けられたデフォルト言語によって、接尾辞の語幹ルールが決まります。 デフォルト言語は、どの言語固有のストップワード(たとえば、 theanaandなど)がインデックスに作成されないかも決定します。

別の言語を指定するには、 テキストインデックス の作成時に default_language オプションを使用します。テキスト インデックスの作成に使用できる言語を確認するには、$text クエリ言語 on 自己管理型配置 を参照してください。操作は次のプロトタイプのようになります。

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_languagespanishに設定します。

db.quotes.createIndex(
{ quote: "text" },
{ default_language: "spanish" }
)

結果のインデックスは、スペイン語の接尾辞ステミング ルールを使用して、quoteフィールドに対する $text クエリをサポートします。例、次のクエリは、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" }
}
)

戻る

ワイルドカードのテキストインデックスの作成

項目一覧