ElasticSearch自定义算分排序(Function Score Query)

 使用 function score query,可以修改文档的相关性算分 (query score),根据新得到的算分排序。

目录

Function Score Query 

 案例


 

Function Score Query 

几种默认的计算分值的函数:

  • Weight:为每一个文档设置一个简单而不被规范化的权重
  • Field Value Factor:使用该数值来修改_socre,例如将"热度"和"点赞数"作为算分的参考因素
  • Random Score:为每一个用户使用一个不同的,随机算分结果
  • 衰减函数:以某个字段的值为标准,距离某个值越近,得分越高
  • Script Score:自定义脚本完全控制所需逻辑
     

GET   /hotel/_search

{

        "query":{

                "function_score": {

                        "query": { "match": {  "al":"外滩" } },  //原始查询条件,搜索文档并根据相关性打分(query score)

                        "functions":[

                                {
                                        "filter": { "term" : { "id":"1" }},  //过滤条件,符合条件的文档才会被重新算分

                                        "weight":10  // 算分函数,算分函数的结果称为function score,将来会与queryscore运算,得到新算分,常见的算分函数有:

                                                weight:给一个常量值,作为函数结果 (function score);

                                                field_value_factor:用文档中的某个字段值作为函数结果;

                                                random_score:随机生成一个值,作为函数结果;

                                                script_score:自定义计算公式,公式结果作为函数结果;

                                }

                        ],
                        "boost_mode": "multiply"   //加权模式,定义function score与query score的运算方式,包括:

                multiply:两者相乘。默认。

                replace:用function store 春换query score

                其它:sum、avg、max、min

                }

        }

}

 案例

题目1:给“如家”这个品牌的酒店排名靠前一些 ?

分析如下

  • 哪些文档需要算分加权?

        品牌为如家的酒店

  • 算分函数是什么?

        weight就可以

  • 加权模式是什么?

        求和  

代码示例

GET   /hotel/_search

{

        "query":{

                "function_score": {

                        "query":{           //...           },

                        "functions" : [                           // 算分函数
                                {

                                        "filter": {                    // 满足的条件,品牌必须是如家

                                        "term": {

                                                "brand":"如家"

                                                }

                                        }, 

                                "weight" : 2                       // 算分权重为2

                                }

                        ],
                        "boost_mode":"sum"                // 求和

                }

        }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/316585.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运维工程师的出路到底在哪里?

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,贝叶斯滤波与Kalman估计、多传感器信息融合,机器学习,人工智能&#xff0c…

ORACLE Primavera P6, Unifier v23.12 系统分享

引言 根据上周的计划,我近日简单制作了一个基于ORACLE Primavera P6 EPPM 以及Unifier 最新版23.12的虚拟机演示环境,里面包括了p6 和 unifier的全套系统服务 此虚拟系统环境仅用于演示、培训和测试目的。如要在生产环境中使用此虚拟机,请您…

IPC之十二:使用libdbus在D-Bus上异步发送/接收信号的实例

IPC 是 Linux 编程中一个重要的概念,IPC 有多种方式,本 IPC 系列文章的前十篇介绍了几乎所有的常用的 IPC 方法,每种方法都给出了具体实例,前面的文章里介绍了 D-Bus 的基本概念以及调用远程方法的实例,本文介绍 D-Bus…

新全国产迅为龙芯 3A6000 处理器板卡

11月28日,“2023龙芯产品发布暨用户大会”在北京举行,迅为作为龙芯重要合作伙伴受邀参加,在整机产品发布仪式上,展示了基于龙芯 3A6000 处理器的全国产安全型工控计算机。 龙芯 3A6000 处理器完全自主设计、性能优异,代…

强烈推荐一个Python库!制作Web Gui也太简单了!

前言 之前小编用Python做GUI界面,首选就是Tkinter、PyQt5 。但是它们实现起来工作量及代码量太大,还要一步步设计调试界面排版等问题,而且界面最终呈现也不是特别美观,还有就是打包后太大等一系列问题。 最近公司同事刚好有个相…

uniapp中uview组件丰富的Code 验证码输入框的使用方法

目录 基本使用 #自定义提示语 #保持倒计时 API #Props #Methods #Event 基本使用 通过ref获取组件对象,再执行后面的操作,见下方示例。 通过seconds设置需要倒计的秒数(默认60)通过ref调用组件内部的start方法,开始倒计时通过监听cha…

GitHub Copilot 最佳免费平替:阿里通义灵码

之前分享了不少关于 GitHub Copilot 的文章,不少粉丝都评论让我试试阿里的通义灵码,这让我对通义灵码有了不少的兴趣。 今天,阿七就带大家了解一下阿里的通义灵码,我们按照之前 GitHub Copilot 的顺序分享通义灵码在相同场景下的…

Linux系统文件IO

Linux系统文件IO 每个系统都有自己的专属函数,我们习惯称其为系统函数。系统函数并不是内核函数,因为内核函数是不允许用户使用的,系统函数就充当了二者之间的桥梁,这样用户就可以间接的完成某些内核操作了。 在前面介绍了文件描…

Windows下使用DOS命令上传文件到服务器

前言 本文将分享在windows环境下,如何编写DOS脚本来上传文件到远程服务器 使用工具 这里我们需要下载:PuTTY(下载地址) PuTTY是由Simon Tatham开发的免费、开源的SSH和Telnet客户端。它允许用户通过命令行使用SSH或Telnet协议连…

部署上传漏洞的靶场环境upload-labs

1、工具介绍 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 upload-labs靶场开源地址::https://…

automatic matting 抠图算法汇总

电商图抠图算法,主要还是关注商品图抠图,内部也有自研的抠图算法,下面主要关注开源抠图算法。一般来说关注trimap-free的方法,即一步抠图,业务上也是trimap-free更加友好,当然业务流上可以先计算trimap&…

Docker 安装Mysql

目录 Docker Mysql安装 ✨安装和配置mysql ✨远程连接mysql远程连接 MySQL 是世界上最流行的开源数据库。根据 DB-Engines的调查数据,MySQL 是第二受欢迎的数据库,仅次于 Oracle 数据库。MySQL在过去由于性能高、成本低、可靠性好,已经成…