MongoDB Atlas Search优化:如何让Cameron Brink匹配评分更高?
调整MongoDB Atlas Search索引提升指定文档的搜索评分
问题背景
当前使用MongoDB Atlas Search实现实时搜索,搜索关键词cameron bri时,Cameron Brink: Stanford的搜索评分低于Haley Cameron: Eastern Ill.,需要修改索引定义让前者获得更高评分。
修改方案
将label字段的分词策略从nGram改为edgeGram,还可可选提升字段权重,具体索引定义如下:
{ "mappings": { "dynamic": true, "fields": { "label": { "maxGrams": 7, "tokenization": "edgeGram", "type": "autocomplete", "weight": 2 // 可选:进一步提升label字段的整体权重 }, "ptgc": { "type": "string" }, "sort": { "type": "number" } } }, "storedSource": true }
原理说明
- 原
nGram分词会生成字段内所有位置的连续字符组合,导致Haley Cameron中位于文本中间的Cameron也能匹配到足够的gram,获得较高评分。 edgeGram仅从字段起始位置生成连续字符组合,Cameron Brink: Stanford的开头Cameron和后续Brink的前三个字符bri会被精准匹配;而Haley Cameron中的Cameron不在起始位置,无法通过edgeGram匹配到有效组合,因此前者的匹配度和评分会显著高于后者。
内容的提问来源于stack exchange,提问作者Canovice
相关产品推荐
相关产品推荐

