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"                // 求和

                }

        }

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

商业综合体能源管理系统功能有哪些?能够为企业带来哪些价值?

随着IT行业的迅猛发展,仅仅实现智能控制已无法满足当前绿色低碳发展的要求,随着智能设备的增多,同时也产生了越来越多的信息孤岛。通过信息技术构建能源管理系统,可以实现先进、智能、经济、可行的商业综合体能源管理解决方案。 …

木工开料机怎么做到减少加工误差的?

在板式家具生产加工中使用木工开料机加工,不仅仅可以提升板材的加工精度,还可以减少板材加工误差,减少板材浪费,所以整个开料环节非常的重要,所以在选择设备的时候一定要谨慎,选择质量可靠的设备。 木工开料…

ssm基于web的网络游戏交易平台信息管理系统的设计与实现论文

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装网络游戏交易平台软件来发挥其高效地信息处理的作用&#x…

HTML5+CSS3+Vue小实例:彩色圆环溶解加载动画

实例:彩色圆环溶解加载动画 技术栈:HTML+CSS+Vue.js 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge&…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Column组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之线性布局容器Column组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Column组件 沿垂直方向布局的容器。 子组件 可以包含子组件。 接…

力扣hot100 二叉树的右视图 递归

&#x1f468;‍&#x1f3eb; 题目地址 时间复杂度&#xff1a; O ( n ) O(n) O(n) &#x1f60b; AC code /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(…

计算机毕业设计------SSM邮件收发管理系统

项目介绍 本项目为基于SSM的邮件收发管理系统&#xff1b; 用户角色包含以下功能&#xff1a; 用户登录,写信给好友,查看收件箱,查看已发送的邮件,草稿箱查看,通讯录设置,个人资料管理等功能。 环境需要 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平…

Golang-strconv库学习笔记

前言&#xff1a; strconv库是go官方提供的一个标准包&#xff0c;主要用于字符串相关的处理。通过参考官方文档、中文文档和其他工具&#xff0c;进行学习记录。学习重点是其中的内置方法。 本文分为Atoi&#xff0c;Format系列&#xff0c;Parse系列&#xff0c;Append系列,…

SparkSQL基础解析(三)

1、 Spark SQL概述 1.1什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块&#xff0c;它提供了2个编程抽象&#xff1a;DataFrame和 DataSet&#xff0c;并且作为分布式SQL查询引擎的作用。 我们已经学习了Hive&#xff0c;它是将Hive SQL转换成MapReduce然后提…

众和策略安全可靠:如何区分大盘股和小盘股?大盘股指数有哪些?

股票根据流转盘能够划分为大盘股、中盘股、小盘股这三大类&#xff0c;那么&#xff0c;怎么区别大盘股和小盘股&#xff1f;大盘股指数有哪些&#xff1f;下面众和策略为我们准备了相关内容&#xff0c;以供参考。 怎么区别大盘股和小盘股&#xff1f; 根据个股的市值来区别…

希亦、觉飞、小吉三款婴儿洗衣机大比拼!全方位对比测评

由于年龄幼小的婴儿的皮肤都非常的幼嫩&#xff0c;因此婴儿衣物材质的类型大部分都是采用为纯棉&#xff0c;并且婴儿的衣物不能够与大人的衣物一起进行混洗&#xff0c;容易把细菌感染到宝宝的衣物上&#xff0c;因此很多家庭为了保证宝宝衣服的有效清洁&#xff0c;避免交叉…

自动化测试用例设计粒度

自动化测试用例的粒度指的是测试用例的细致程度&#xff0c;即每个测试用例检查的功能点的数量和范围。 通常&#xff0c;根据测试用例的粒度&#xff0c;可以被分为3种不同的层次&#xff0c;从更低层次的细粒度到更高层次的粗粒度。 第一种&#xff1a;单元测试 - 细粒度 …

使用IDEA创建使用 JDK8 的 2.x.x 版本的 Spring Boot 项目以及 Spring Boot 项目如何修改JDK版本

目录 一、在阿里云上官网上创建项目 二、将 IDEA 中创建项目的源地址修改为阿里云官网 三、创建 3.x.x 的项目之后修改配置降低至 2.7.x 版本和使用 JDK8&#xff08;修改 Spring Boot 的 JDK 版本同理&#xff09; 从上面的 Spring Boot 官网的截图中可以发现&#xff0c;自…

【算法挨揍日记】day34——647. 回文子串、5. 最长回文子串

647. 回文子串 647. 回文子串 题目描述&#xff1a; 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串&am…

1 电科院FTU检测标准学习笔记-外观检查

作者简介&#xff1a; 本人从事电力系统多年&#xff0c;岗位包含研发&#xff0c;测试&#xff0c;工程等&#xff0c;具有丰富的经验 在配电自动化验收测试以及电科院测试中&#xff0c;本人全程参与&#xff0c;积累了不少现场的经验 目录 **前言****检测大纲****外观与结构…

docker (portainer 安装nginx)

一、创建容器 二、配置端口&#xff0c;以及容器卷挂载 挂载目录配置&#xff1a;(下方截图的目录如下&#xff0c;docker 改为 mydocker&#xff0c;用docker作为根目录不行) /mydocker/nginx/html /usr/share/nginx/html /mydocker/nginx/conf/nginx.conf /etc/nginx/ng…

18|CAMEL:通过角色扮演脑暴一个鲜花营销方案

18&#xff5c;CAMEL&#xff1a;通过角色扮演脑暴一个鲜花营销方案 CAMEL 交流式代理框架 下面我们一起来看看 CAMEL——这个多 AI 通过角色扮演进行交互的框架&#xff0c;以及它在 LangChain 中的具体实现。 CAMEL&#xff0c;字面意思是骆驼。这个框架来自于论文《CAMEL:…

企业微信开发:自建应用:应用形态(网页,小程序,默认页面)

概述 问题&#xff1a; 企业微信&#xff0c;自建应用&#xff0c;应该实现成什么样子&#xff1f;应用里是一个网页应用吗&#xff1f; 企业微信自建应用可以实现为多种形态&#xff0c;根据实际需求和功能设计&#xff0c;它可以是一个网页应用、一个小程序或者结合企业微信提…

Elasticsearch8集群部署

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 本文记录在3台服务器上离线搭建es8.7.1版本集群。 1. 修改系统配置 1.1 hosts配置 在三台es节点服务器加入hostname解析&…

【XR806开发板试用】+00. Win11环境下安装docker环境

很幸运得到XR806开发板的试用机会&#xff0c;在此深深感谢主办方给菜鸟一个机会。 之前开发的芯片主要是STM32、GD32之类的芯片&#xff0c;都是基于win环境的集成环境。现在拿到这块开发板感觉无从下手&#xff0c;就从安装docker环境开始&#xff0c;慢慢更新xr806的开发之…