如果要召回既包含:“电动汽车” 完全匹配,又包含“电动”或“汽车” 分词匹配的全量数据。大致的检索语句如下:
POST index_001/_search "query": { "bool": { "should": [ "match_phrase": { "title": { "query": "电动汽车", "boost": 5 "bool": { "should": [ "match": { "title": "电动" "match_phrase": { "title": "汽车" "minimum_should_match": 2 }
如上检索部分:完全匹配加了 boost 提升权重。
返回结果如下:
返回结果按照评分由高到低顺序排列,_id 序列为:5、7、3、6、4 ......
置顶显示_id 为 1、2、3 的数据,pinned query 实现如下:
GET index_001/_search "query": { "pinned": { "ids": [ "1", "2", "organic": { "bool": { "should": [ "match_phrase": { "title": { "query": "电动汽车", "boost": 5 "bool": { "should": [ "match": { "title": "电动" "match_phrase": { "title": "汽车" "minimum_should_match": 2 }
本质是在原来检索语句的基础上,添加了如下部分代码:
"pinned": { "ids": [ "1", "2", "organic": {
第一:置顶显示的 id ,写法如下:
第二:除了置顶数据之外的其余正常检索语句块内容。只是加了“organic” 包裹一层。其中的检索语句还是原来的写法 ,拷贝过来即可。
返回结果如下:
返回结果已 pinned(类似做了“广告位”定制),_id 序列为:1、2、3、5 ....... 实现了类百度置顶显示广告的效果。
Pinned query 源码解读认知前提:源码中最大评分计算方法float MAX_ORGANIC_SCORE = Float.intBitsToFloat((0xfe 23)) - 1;
本质下面代码等价:
float max_rst = (float)Math.pow(2,127);//1.7014118E38
也就是说:MAX_ORGANIC_SCORE 大小为:2 的 127 次幂,是 Elasticsearch float 最大值。
最大评分作用正常查询的评分得分不会超过 MAX_ORGANIC_SCORE, 将固定查询(pinned query)的评分设定为:MAX_ORGANIC_SCORE。
pinned query 保证置顶显示解密原理:将置顶显示的数据通过 bool 组合查询 + boost 提升权重的方式给设置了 float 最大值评分,这样就能保证置顶显示了。
核心源码实现如下:
注意细节没有深究,比如:置顶返回的结果显示的是原始评分。
小结读者可能会问:这并没有实现基于特定关键词返回特定数据的需求?其实有了pinned query 再将特定关键词与待置顶显示文章 _id ,建立个一对多的映射关系就可以实现。映射关系可以自己内存维护或者借助 redis 实现都可以。
你我发现的新需求,很可能别人早就发现,且已经提交 Git了。更可怕的是:官方新版本已经实现了!
要注重基础夯实的同时,多关注一下技术动态。两手抓、两手都要硬!
参考:
https://www.elastic.co/guide/en/elasticsearch/reference/7.4/release-notes-7.4.0.html大家在开发Python的过程中,一定会遇到很多反斜杠的问题,很多人被反斜杠的数量...
阿里巴巴、腾讯、支付宝、网易、IBM、谷歌、京东、 百度、滴滴等一线互联网公司...
【51CTO.com快译】 数据分析是对数据进行判断、细化、更改和建模的过程,目的是...
本月DataWorks产品月刊为您带来 产品活动 1.参与阿里云DataWorks问卷调研 (Aliyu...
案例背景 永安稻香小镇的体验式数字农业基地是余杭街道依托“阿里以西10分钟”的...
公司介绍 长沙营智信息技术有限公司旗下易撰网,2017年10月份上线以来,基于数据...
人脸识别 是目前商业应用最成熟、最广泛的人工智能技术之一,成为开发者、企业接...
【51CTO.com快译】不知道您是否听说过软件架构师最讨厌意大利面这个梗?它是指软...
操作场景 您可以删除不需要的私有镜像。 删除私有镜像后,将无法找回,请谨慎操...
大数据市场如今正在呈爆炸式增长。根据调研机构Markets and Markets公司的调查,...