系统里搜索 上海市免费停车场的时候,期望结果从第一页到最后一页如下
1:上海市and免费and停车场
2:上海市and停车场 or 免费and停车场
3:停车场 or 上海市 or 免费
bool查询多次可以达到这样的结果,但是分页需要手动处理,而且还要mustnot 上一层出现的数据id,这么做感觉很麻烦,
而且如果用户搜一个特别长的词,分出来的词语好几个会更加难以处理。
es有默认的相关性评分 比如match一个搜索词的时候,直接用match的结果顺序返回。
es能把这三种查询在一次结果里按照顺序返回结果吗(或者说有什么替代的查询方式吗)
1:上海市and免费and停车场
2:上海市and停车场 or 免费and停车场
3:停车场 or 上海市 or 免费
bool查询多次可以达到这样的结果,但是分页需要手动处理,而且还要mustnot 上一层出现的数据id,这么做感觉很麻烦,
而且如果用户搜一个特别长的词,分出来的词语好几个会更加难以处理。
es有默认的相关性评分 比如match一个搜索词的时候,直接用match的结果顺序返回。
es能把这三种查询在一次结果里按照顺序返回结果吗(或者说有什么替代的查询方式吗)
3 个回复
laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net
赞同来自: shengtu0328
更进一步说,您有三个条件想依据三个条件的顺序返回。
建议:
1、全局考虑问题,三个条件做bool组合。
2、返回结果就是期待的总的结果,又因为返回的结果是基于评分的(假定未做不去评分的限制,如:不用filter)
3、那么其实结果就是你想要的结果,不过是三个组合条件bool组合后的检索结果。
HelloClyde
赞同来自: shengtu0328
比如上海市/免费/停车场
加上权重后: 上海市^10 OR 免费^5 OR 停车场^20
权重你可以离线算idf,或者别的text rank的方式再➕一些规则
tongchuan1992 - 学无止境、学以致用
赞同来自: