悟空,拿我的打狗棒来

es如何让含有输入关键字的越多的排在前面

匿名 | 发布于2017年09月20日 | 阅读数:5464

输入关键字搜索。比如输入“腾龙百货超市”
搜出结果 含有腾 龙什么的 含有一个字 两字的反而在前面
真正含有 腾龙百货超市 完整6个字的反而在中间去了

下面是代码:

QueryBuilder q2=QueryBuilders.multiMatchQuery(value, key).type("most_fields").minimumShouldMatch("80%");

查询如何设置 含有输入的关键字越多的排在前面,most_fields好像就是这个意思的嘛 没生效
已邀请:

Cheetah

赞同来自: 向世明

most_fields是配合multiMatchQuery使用的,是属于字段中心式,意思是和字段想关,和词无关
你这个属于相关度排序,关系到词频、稀有度、词长度,你可以将explain设置为true,看看实际评分
 
匿名用户

匿名用户

赞同来自:

那我需要咋处理才能达到我想要的结果啊??
匿名用户

匿名用户

赞同来自:

1.png


2.png

这个分别是  含有一个苗字的  和  含有苗姑娘 三个字的 explain的结果。。。怎么区分是由啥引起的?
匿名用户

匿名用户

赞同来自:

所以结论是需要禁用文档长度吧  看起来是文档长度引起的?
匿名用户

匿名用户

赞同来自:

在mapping中设置 index_options = doc 这是禁用词频
如何设置禁用长度?没找到。。。

要回复问题请先登录注册