Elasticsearch func_score

2024-09-06 07:18
文章标签 elasticsearch func score

本文主要是介绍Elasticsearch func_score,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

场景介绍

衰减函数

总结

官网文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.x/query-dsl-function-score-query.html

作者公众号:在这里插入图片描述

1.场景介绍

在全文检索中,排序是一个很讲究的事。关键字命中,是全文检索中一个很关键的因素。然而,某些时候,我们关键字的命中可能非常低,或者来两个doc中关键字的命中分数相差很小。

举个例子:有两个店家,他们上架了差不多的商品,在商品信息里面,信息大同小异。在我们输入关键字“xx商品”时,关键字命中得分相同,或者差异性很小,这个时候我们可能需要根据场景去用其他得分来影响排序。可能我们的业务需求是最近上新的应该在前面,于是我们引入了上架时间(launchTime)因子;可能我们还需要店铺距离用户的距离(location);或者我们需要根据店铺的欢迎程度(likeNumber)等等
所以我们需要一个综合的得分计算规则,不仅仅包含关键词的命中,还需要其他因子来做决定。

2.衰减函数

直接上图
先来看看DSL,如何实现时间对分数的影响

在这里插入图片描述
重点说一下衰减函数几个参数的含义:
在这里插入图片描述
看图说话:

origin: 衰减度最低的地方,也就是值为1的点

offset: 针对origin的偏移,在origin-offset范围内的数据,衰减度不变,保持为1;

decay: 配合scale ,可以决定衰减的速度,值为某一个分数。

scale: 值为x轴的某个数值,影响衰减速度

打个比方:origin 是时间类型,origin=”now“,offset=2d,scale=10,decay=0.5,那么表达的含义就是:从现在时间点为标准,两天内的数据时间分数是相同的,超过两天的数据,保证距离现在12(scale+offset)天时,函数计算的得分为0.5。
java代码的表达方式如下:
在这里插入图片描述
代码语义:
定义了3个衰减函数,分别是距离、更新时间、pv(浏览量)。
距离用户所在地的10km以内的数据,距离得分相同,10-30km,分数开始衰减,到30km的时候,分数衰减到0.5
更新时间7天以内的数据,时间上计算得分相同,7-14天,得分衰减,14天时,得分衰减到0.3
3. pv 为利用衰减函数,采用了逆向思维,当pv达到10000000时,得分为1,scale 设置为 origin-50,想表达的意思是pv在0-50的时候,分数递增到0.99.主要是前期应对前期pv量不足的情况。

这篇关于Elasticsearch func_score的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1141363

相关文章

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

856. Score of Parentheses

856. Score of Parentheses class Solution:def scoreOfParentheses(self, s: str) -> int:stack=[]i=0for c in s:if c=='(':stack.append(c)else:score=0while stack[-1]!='(':score+=stack.pop()stack.pop()score

ElasticSearch的DSL查询⑤(ES数据聚合、DSL语法数据聚合、RestClient数据聚合)

目录 一、数据聚合 1.1 DSL实现聚合 1.1.1 Bucket聚合  1.1.2 带条件聚合 1.1.3 Metric聚合 1.1.4 总结 2.1 RestClient实现聚合 2.1.1 Bucket聚合 2.1.2 带条件聚合 2.2.3 Metric聚合 一、数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如:

【docker】基于docker-compose 安装elasticsearch + kibana + ik分词器(8.10.4版本)

记录下,使用 docker-compose 安装 Elasticsearch 和 Kibana,并配置 IK 分词器,你可以按照以下步骤进行。此过程适用于 Elasticsearch 和 Kibana 8.10.4 版本。 安装 首先,在你的工作目录下创建一个 docker-compose.yml 文件,用于配置 Elasticsearch 和 Kibana 的服务。 version:

ElasticSearch底层原理简析

1.ElasticSearch简述 ElastiaSearch(以下简称ES)是一个基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,支持RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。ES设计用于云计算中,能够进行实时搜索,支持PB级搜索,具有稳定,可靠,快速,安装使用方便等

ElasticSearch 6.1.1 通过Head插件,新建索引,添加文档,及其查询数据

ElasticSearch 6.1.1 通过Head插件,新建索引,添加文档,及其查询; 一、首先启动相关服务: 二、新建一个film索引: 三、建立映射: 1、通过Head插件: POST http://192.168.1.111:9200/film/_mapping/dongzuo/ {"properties": {"title": {"type":

ElasticSearch 6.1.1运用代码添加索引及其添加,修改,删除文档

1、新建一个MAVEN项目:ElasticSearchTest 2、修改pom.xml文件内容: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.or

Windows下安装Elasticsearch,启动报错,解决方法,访问

对于Windows用户,我们推荐使用MSI安装包进行安装。这个安装包使用图形用户界面来引导你进行安装。 首先,从这里https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.1.msi下载Elasticsearch 6.1.1的MSI安装包。 然后双击下载好的安装包文件启动图形化安装程序,在第一个界面,选

Elasticsearch:无状态世界中的数据安全

作者:来自 Elastic Henning Andersen 在最近的博客文章中,我们宣布了支持 Elastic Cloud Serverless 产品的无状态架构。通过将持久性保证和复制卸载到对象存储(例如 Amazon S3),我们获得了许多优势和简化。 从历史上看,Elasticsearch 依靠本地磁盘持久性来确保数据安全并处理陈旧或孤立的节点。在本博客中,我们将讨论无状态的数据持

ElasticSearch的DSL查询④(DSL查询、RestClient的DSL查询)

目录 一、DSL查询 1.1 快熟入门 1.2 叶子查询 1.2.1 全文检索查询 1)match查询 2)multi_match查询 1.2.2 精确查询 1)term查询 2)range查询 3)ids查询 1.3 复合查询 1.3.1 bool查询 1.3.2 算分函数查询 1)基本语法: 2)运行流程: 3)示例: 4)执行结果: 1.4 排序 1.5