MongoDB $text搜索是否支持将字符串数组设置为同义词进行匹配?
你描述的功能真实存在,是MongoDB全文检索体系下的同义词映射功能,与$text全文搜索完全匹配。
该功能需要在创建文本索引时提前配置同义词分组,配置完成后执行$text查询时,MongoDB会自动将查询词替换为同组内的所有词汇进行匹配,无需额外修改查询逻辑。你提到的示例同义词组对应的索引创建代码如下:
db.你的集合名.createIndex( // 此处替换为你需要做全文检索的字段,支持多字段组合 { 检索字段名: "text" }, { synonyms: [ { mapping: { synonyms: ["cheez", "cheese"], input: ["cheez", "cheese"] } }, { mapping: { synonyms: ["donut", "doughnut"], input: ["donut", "doughnut"] } }, { mapping: { synonyms: ["chips", "fries", "crisps"], input: ["chips", "fries", "crisps"] } } ] } )
索引创建完成后,执行查询db.你的集合名.find({ $text: { $search: "chips" } })时,所有包含chips、fries、crisps任意一个词汇的文档都会被检索返回,完全符合你描述的效果。
注意事项:
- 该功能仅在MongoDB 4.4及以上版本可用
- 同义词映射仅对
$text全文查询生效,正则匹配、普通字段等值查询不会触发该逻辑 - 同义词组支持任意长度的词汇集合,可根据业务需求自行扩展
内容的提问来源于stack exchange,提问作者benmneb
相关产品推荐
相关产品推荐

