博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
elasticsearch的打分策略
阅读量:5987 次
发布时间:2019-06-20

本文共 822 字,大约阅读时间需要 2 分钟。

hot3.png

es的搜索结果,每一个结果上面都会有一个“_score”字段,就是搜出来这个结果所占的分值。

这个就涉及到搜索结果的排序问题。当然我们想要相关度越大结果越靠前。

es评分策略设计到两点

   1:内容相关度

    比如淘宝搜索 “小米电视机“,淘宝的搜索会先把条件分词 分为 “小米”“电视”“电视机”(也看可能更细粒度),然后去自己的仓库查找符合条件的产品,当然我们看到的最靠前的就是小米电视机 32寸,曲面 4k 一些相关的电视机,但是你跳转到第五页或者更靠后,你会发现产品 并不是小米电视机,有一些 小米配件,小米遥控板,或者海信电视机,索尼电视剧一类的产品。 这种现象就是说搜索会根据入参的分词去搜索数据库的数据,当字段的值匹配度越高,这个结果的评分就越高,就越靠前。(声明:笔者并不知道淘宝的搜索引擎是什么,只是用这种现象解释一下)

2:映射结构字段的权重值

    195808_35Mt_2401293.png

我自己type的一个字段叫做zuName 类型:文本类型,分词器是用的ik的分词器,权重值为5

现在假如有两个字段 :zuName 权重为5 ;zuDetail 权重为3

这样如果多字段搜索的话,两个字段的匹配度一致的话,但是zuName返回的评分更高一点,因为开始设置的权重更高。我现在的用途就是,多type查询的时候,相同字段会设置不同的权重,这样两个type的数据可以区分出来了。

es也支持自定义打分策略,笔者有成熟的自定义打分策略方案会持续更新出来。

我是使用java操作es的,大家可以在扣扣群互相交流194610_cQ9Z_2401293.png

周末愉快,明天不来加班算我输!

 

 

==============================我是分割线===========================

如果本文写的文章对你有帮助,请你用支付宝扫描一下该红包,享受下阿里红利,我们都有红包,来勉励我写更多的文章。谢谢!

174930_zdcS_2401293.png

 

转载于:https://my.oschina.net/jsonyang/blog/1477383

你可能感兴趣的文章
《JavaScript程序设计》—— 标准对象 Object
查看>>
JavaScript 注册页面 -> 发送验证码 逻辑
查看>>
Hexo插件之Hexo-UUID
查看>>
http那些事:http\http2\https
查看>>
浏览器发送http请求过程分析
查看>>
Node学习记录: koa
查看>>
新人上路-搭建项目-maven和gradle
查看>>
Struts2初始化过程
查看>>
函数式编程(二)
查看>>
第三方库冲突
查看>>
php设计模式之单例模式
查看>>
330. Patching Array
查看>>
celery 使用
查看>>
[TODO] CORFU: A Shared Log Design for Flash Clusters
查看>>
2018年开源状况:代码贡献超310亿行,而漏洞超16000个
查看>>
微软亚洲研究院等提出CNN训练新方法RePr,准确率显著提升
查看>>
利用深度学习从大脑活动合成语言,应对人类语音挑战
查看>>
要突破技术瓶颈?80%的人忽略了这个因素
查看>>
PayPal API风格指南和设计模式
查看>>
SSPL的MongoDB再被抛弃,GUN Health也合流PostgreSQL
查看>>