指定文本索引的默认语言

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

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

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

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

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

在你开始之前

创建一个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生成的索引支持使用西班牙语后缀词干规则对字段进行文本搜索查询。例如,以下查询在字段punal中搜索关键字quote

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" }
   }
)

了解更多

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""