Docs 菜单
Docs 主页
/
MongoDB Manual
/ / / /

在自管理部署上为包含多种语言的集合创建文本索引

在此页面上

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

您可以创建文本索引,以提高在包含多种语言文本的文档或嵌入式文档的集合上运行文本搜索查询的性能。

如果集合包含多种不同语言的文档或嵌入式文档,请包含一个名为 language的字段,并将这些文档的语言指定为字段值。 要查看可用于文本索引的语言,请参阅自管理部署上的文本搜索语言。

您的插入操作应类似于以下示例,以支持多种语言的文本索引:

db.<collection>.insertOne(
{
<field>: <value>,
language: <language>
}
)

创建包含多语言文档的quotes集合,其中包含language字段:

db.quotes.insertMany(
{
_id: 1,
language: "portuguese",
original: "A sorte protege os audazes.",
translation:
[
{
language: "english",
quote: "Fortune favors the bold."
},
{
language: "spanish",
quote: "La suerte protege a los audaces."
}
]
},
{
_id: 2,
language: "spanish",
original: "Nada hay más surrealista que la realidad.",
translation:
[
{
language: "english",
quote: "There is nothing more surreal than reality."
},
{
language: "french",
quote: "Il n'y a rien de plus surréaliste que la réalité."
}
]
},
{
_id: 3,
original: "Is this a dagger which I see before me?",
translation:
{
language: "spanish",
quote: "Es este un puñal que veo delante de mí."
}
}
)

以下操作在originaltranslation.quote字段上创建文本索引:

db.quotes.createIndex({ original: "text", "translation.quote": "text", "default_language" : "fr" })

注意

英语是索引的默认语言。 如果未指定default_ language ,则查询必须使用$ 语言参数指定语言。 有关详细信息,请参阅为自管理部署的文本索引指定默认语言。

生成的索引支持对包含originaltranslation.quote字段的文档和嵌入式文档进行文本搜索查询。 文本索引遵循不同的后缀词干提取规则,并根据language字段中的值忽略每种语言特定的停用词。

示例,以下查询搜索french单词réalité

db.quotes.find(
{ $text:
{ $search: "réalité" }
}
)

输出:

[
{
_id: 2,
language: 'spanish',
original: 'Nada hay más surrealista que la realidad.',
translation: [
{
language: 'english',
quote: 'There is nothing more surreal than reality.'
},
{
language: 'french',
quote: "Il n'y a rien de plus surréaliste que la réalité."
}
]
}
]

对于不包含language字段的嵌入式文档,

  • 如果封闭文档包含language字段,则索引将使用该文档的语言来嵌入文档。

  • 否则,索引将使用嵌入式文档的默认语言。

对于不包含language字段的文档,索引使用默认语言,即英语。

后退

指定语言