You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB无语言字段时为文本索引指定多语言的方案咨询

解决方案

你可以直接在创建复合文本索引时,为每个字段单独指定对应的语言规则,不需要依赖文档内的language字段,完全适配你的场景。具体命令如下:

db.yourCollection.createIndex(
  {
    "name.ru": "text",
    "description.ru": "text",
    "name.en": "text",
    "description.en": "text"
  },
  {
    weights: {
      "name.ru": 10,
      "description.ru": 5,
      "name.en": 10,
      "description.en": 5
    },
    default_language: "english",
    language_override: "none"
  }
)

关键说明:

  • 索引会自动按指定规则处理不同字段:name.ru和description.ru使用俄语词干分析逻辑,name.en和description.en沿用默认的英语规则(你也可以显式给这两个字段加上language: "english",效果一致)。
  • weights参数用于调整不同字段的搜索权重,可根据业务需求修改数值。
  • language_override: "none"可以避免文档中若存在language字段时,覆盖我们预设的索引语言配置,防止意外干扰。

查询示例:

搜索俄语内容时,显式指定语言即可:

db.yourCollection.find(
  { $text: { $search: "русский запрос", $language: "russian" } }
)

搜索英语内容可省略$language(默认语言为英语):

db.yourCollection.find(
  { $text: { $search: "english query" } }
)

内容的提问来源于stack exchange,提问作者Alexander Fedorov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:55:48