MongoDB文本索引结合评分排序实现方案咨询
MongoDB文本搜索结合评分排序实现方案
你的需求完全可以在MongoDB内部实现,不需要外部处理。
MongoDB的文本搜索支持返回文本匹配得分(textScore),你可以结合这个得分和rating字段来定制排序逻辑,具体实现如下:
核心查询代码
db.books.find( { $text: { $search: "example" } }, { _id: 1, title: 1, description: 1, rating: 1, score: { $meta: "textScore" } // 获取文本匹配的得分 } ).sort( { score: { $meta: "textScore" }, // 先按文本匹配得分降序(保留你配置的字段权重优先级) rating: -1 // 文本得分相同时,按评分降序排列 } )
逻辑说明
- 你之前配置的title和description权重会自动体现在
textScore的计算中,title匹配的权重会高于description - 排序时先以文本匹配得分优先,确保搜索相关性高的文档排在前面;当多个文档文本得分相同时(比如你的两个示例文档),会按照
rating从高到低排序,这样book2会排在book1之前
内容的提问来源于stack exchange,提问作者Bad Bea
相关产品推荐
相关产品推荐

