“文档” 菜单
文档首页
/
MongoDB Manual
/ / /

为文本索引指定默认语言

在此页面上

  • 开始之前
  • 步骤
  • 结果
  • 了解详情

默认情况下,文本索引的 default_languageenglish。为提高非英语文本搜索查询的性能,您可以指定与文本索引相关的不同默认语言。

与索引数据关联的默认语言决定了后缀词干提取规则。默认语言还确定哪些特定于语言的停用词(例如英语中的 theanaand)未编入索引。

要指定不同的语言,请在创建文本索引时使用default_language选项。要查看可用于文本索引的语言,请参阅文本搜索语言。您的操作应类似于以下原型:

db.<collection>.createIndex(
{ <field>: "text" },
{ default_language: <language> }
)

如果您指定default_language值为none ,则文本索引会解析字段中的每个单词,包括停用词,并忽略后缀词干。

创建一个 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" }
}
)
← 创建通配符文本索引