为自管理部署指定文本索引的默认语言
本教程介绍如何指定与文本索引关联的默认语言,以及如何为包含不同语言文档的集合创建文本索引。
为 索引指定默认语言text
与索引数据关联的默认语言决定了解析词根的规则(即 提取词干)并忽略停用词。 索引数据的默认语言是english
。
要指定不同的语言,请在创建text
索引时使用default_language
选项。 有关 可用的语言,请参阅 自管理部署上 的 文本搜索语言。default_language
以下示例为quotes
集合创建了content
字段上的text
索引,并将default_language
设置为spanish
:
db.quotes.createIndex( { content : "text" }, { default_language: "spanish" } )
text
为多种语言的集合创建 索引
指定文档中的索引语言
如果集合包含不同语言的文档或嵌入式文档,请在文档或嵌入式文档中包含名为language
的字段,并指定该文档或嵌入式文档文档的语言作为其值。
构建text
索引时,MongoDB 将使用该文档或嵌入式文档的指定语言:
文档中的指定语言会覆盖
text
索引的默认语言。嵌入式文档中的指定语言会覆盖包含文档中指定的语言或索引的默认语言。
有关支持的语言列表,请参阅自管理部署上的文本搜索语言。
例如,集合quotes
包含多语言文档,其中文档和/或嵌入式文档(根据需要)包含language
字段:
{ _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í." } }
如果在quote
字段上创建text
索引,默认语言为英语。
db.quotes.createIndex( { original: "text", "translation.quote": "text" } )
然后,对于包含language
字段的文档和嵌入式文档, text
索引使用该语言来解析词干和其他语言特征。
对于不包含language
字段的嵌入式文档,
如果封闭文档包含
language
字段,则索引将使用嵌入式文档的文档语言。否则,索引将使用嵌入式文档的默认语言。
对于不包含language
字段的文档,索引使用默认语言,即英语。
使用任何字段指定文档的语言
要使用language
以外名称的字段,请在创建索引时包含language_override
选项。
例如,使用以下命令使用idioma
而不是language
作为字段名称:
db.quotes.createIndex( { quote : "text" }, { language_override: "idioma" } )
quotes
集合的文档可以使用idioma
字段指定语言:
{ _id: 1, idioma: "portuguese", quote: "A sorte protege os audazes" } { _id: 2, idioma: "spanish", quote: "Nada hay más surrealista que la realidad." } { _id: 3, idioma: "english", quote: "is this a dagger which I see before me" }