如何计算这样的score,query分词后的tokens在查询的字段中位置越接近得分越高?

Elasticsearch | 作者 tygcs | 发布于2018年10月24日 | 阅读数:221

如题,
例如“我喜欢狗”,分词后是“我”,“喜欢”,“狗”
搜索的字段分别是:
field1=“我很喜欢动物,比如狗”
field2=“我喜欢像狗一样的动物”
此时,field2中“我喜欢狗”的位置更靠近一些,因此权重可以设置的大一些。
这里距离的计算可以我们自己来定义,
但是好像无法通过script score之类的来实现,因为无法知道tokens在字段中被匹配到的位置
不知道有没有方法来实现这一类的问题啊?
已邀请:

rochy - rochy_he@tw

赞同来自:

推荐使用 matchPhraseQuery 来实现上述的搜索,同时设置 slop 参数即可控制距离问题;
slop 可以简单理解为编辑距离;
 
如果觉得 matchPhraseQuery 过于严格,可以使用 Dis Max Query 将 matchPhraseQuery 与 matchQuery 结合起来进行搜索
 
如果一定想自己控制词条距离,可以使用 SpanQuery 进行实现
 
请参考:https://blog.csdn.net/xifeijia ... 90707
https://www.elastic.co/guide/e ... .html

要回复问题请先登录注册