es搜索排序不正确
沿用该文章里的数据https://www.cnblogs.com/MRLL/p/12691763.html
查询时发现,一模一样的name,但是相关度不一样
GET /z_test/doc/_search
{
"explain": false,
"query": {
"match_phrase": {
"name": "测试"
}
}
}
结果
{
"took" : ,
"timed_out" : false,
"_shards" : {
"total" : ,
"successful" : ,
"skipped" : ,
"failed" :
},
"hits" : {
"total" : ,
"max_score" : 0.5753642,
"hits" : [
{
"_index" : "z_test",
"_type" : "doc",
"_id" : "D4eQcnEBf_xjEc-wO9P0",
"_score" : 0.5753642,
"_source" : {
"name" : "测试123"
}
},
{
"_index" : "z_test",
"_type" : "doc",
"_id" : "2oeLcnEBf_xjEc-wFNK2",
"_score" : 0.5753642,
"_source" : {
"name" : "测试"
}
},
{
"_index" : "z_test",
"_type" : "doc",
"_id" : "_analyze",
"_score" : 0.45840853,
"_source" : {
"name" : "测试"
}
},
{
"_index" : "z_test",
"_type" : "doc",
"_id" : "qHeKcnEBvg5mZsCPxwX1",
"_score" : 0.3672113,
"_source" : {
"name" : "测试"
}
},
{
"_index" : "z_test",
"_type" : "doc",
"_id" : "AVSTcnEBjEFwhOIJHS0S",
"_score" : 0.33573607,
"_source" : {
"name" : "测试1"
}
}
]
}
}
查询文档后得知,在相关度分值的计算中有个属性为逆向文档频率,意思为该搜索字段在整个索引的文档里出现的频率,出现的越多所占分值权重越低
参照该文章https://blog.csdn.net/paditang/article/details/79098830
解决办法为用以下查询
GET /z_test/doc/_search?search_type=dfs_query_then_fetch
{
"explain": false,
"query": {
"match": {
"name": {"query": "测试"}
}
}
}
dfs_query_then_fetch意为使用全局的文档信息打分 默认查询参数为query then fetch
- 发送查询到每个shard
- 找到所有匹配的文档,并使用本地的Term/Document Frequency信息进行打分
- 对结果构建一个优先队列(排序,标页等)
- 返回关于结果的元数据到请求节点。注意,实际文档还没有发送,只是分数
- 来自所有shard的分数合并起来,并在请求节点上进行排序,文档被按照查询要求进行选择
- 最终,实际文档从他们各自所在的独立的shard上检索出来
- 结果被返回给用户
dfs_query_then_fetch
- 预查询每个shard,询问Term和Document frequency
- 发送查询到每隔shard
- 找到所有匹配的文档,并使用全局的Term/Document Frequency信息进行打分
- 对结果构建一个优先队列(排序,标页等)
- 返回关于结果的元数据到请求节点。注意,实际文档还没有发送,只是分数
- 来自所有shard的分数合并起来,并在请求节点上进行排序,文档被按照查询要求进行选择
- 最终,实际文档从他们各自所在的独立的shard上检索出来
- 结果被返回给用户
PUT /my_index
{
"mappings": {
"doc": {
"properties": {
"name": {
"type": "string",
"index_options": "docs"
}
}
}
}
}
es搜索排序不正确的更多相关文章
- ES搜索排序,文档相关度评分介绍——Vector Space Model
Vector Space Model The vector space model provides a way of comparing a multiterm query against a do ...
- ES搜索排序,文档相关度评分介绍——TF-IDF—term frequency, inverse document frequency, and field-length norm—are calculated and stored at index time.
Theory Behind Relevance Scoring Lucene (and thus Elasticsearch) uses the Boolean model to find match ...
- ES搜索排序,文档相关度评分介绍——Field-length norm
Field-length norm How long is the field? The shorter the field, the higher the weight. If a term app ...
- YII关联字段并带搜索排序功能
1.简介 从接触yii框架到现在已经快有两个月了,但是自己对yii框架的了解程度并不是很深,并没有系统地去学习,仅仅只是在做项目的时候遇到不懂得知识才去翻手册. 在上一个项目中因为需要将关联的表的字段 ...
- 搜索实时个性化模型——基于FTRL和个性化推荐的搜索排序优化
本文来自网易云社区 作者:穆学锋 简介:传统的搜索个性化做法是定义个性化的标签,将用户和商品通过个性化标签关联起来,在搜索时进行匹配.传统做法的用户特征基本是离线计算获得,不够实时:个性化标签虽然具有 ...
- 【python】Leetcode每日一题-搜索排序数组2
[python]Leetcode每日一题-搜索排序数组2 [题目描述] 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同. 在传递给函数之前,nums 在预先未知的某个下标 k( ...
- 从零搭建 ES 搜索服务(六)相关性排序优化
一.前言 上篇介绍了搜索结果高亮的实现方法,本篇主要介绍搜索结果相关性排序优化. 二.相关概念 2.1 排序 默认情况下,返回结果是按照「相关性」进行排序的--最相关的文档排在最前. 2.1.1 相关 ...
- es定制排序搜索结果
GET /company/employee/_search { "query": { "constant_score": { "filter" ...
- ES 搜索结果expalain 可以类似数据库性能调优来看排序算法的选择
When we run a simple term query with explain set to true (see Understanding the Score), you will see ...
随机推荐
- 初学嵌入式Linux
初学嵌入式Linux,感觉需要学习的东西太多了.把学习过程中的收获和问题记录在这里,算是一份经验吧. 前面利用开发板带的现成的东西step by step让Linux 2.4.19在开发板上跑 ...
- java 知识点总结(转)
转载自 https://www.cnblogs.com/wl310538259/p/5218251.html (一)Java 1.接口和抽象类的区别 ①抽象类里可以有构造方法,而接口内不能有构造方法. ...
- C 2015年真题
1.写出程序输出结果 void main() { char p[10]="abc"; char q[]="xyz"; int i,j; i=0; while(* ...
- 33. CentOS7 静态ip设置
1.网络连接选择NAT模式: 2.关闭vmware的dhcp:选择编辑-->虚拟网络编辑器,选择VMnet8,去掉使用本地DHCP服务将ip地址分配给虚拟机(D). 3. 点击NAT设置(S)查 ...
- ORM常用字段及方式
创建小型数据库 模型层 ORM常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. Integer ...
- CF1326C Permutation Partitions 题解,
原题链接 简要题意: 给定一个 \(1\) ~ \(n\) 的置换,将数组分为 \(k\) 个区间,使得每个区间的最大值之和最大.求这个值,和分区的方案数. 关键在于 \(1\) ~ \(n\) 的置 ...
- 命令行中运行Java字节码文件提示找不到或无法加载主类的问题
测试类在命令行操作,编译通过,运行时,提示 错误: 找不到或无法加载主类 java类 package com.company.schoolExercise; public class test7_3_ ...
- Samba centos7文件共享服务器搭建教程,可以更改任意需求操作配置详解。
先安装软件 yum -y install samba-client 请看如下配置文件说明 [gongxiang] comment = This is my shared folder ...
- 《自拍教程52》Python_adb运行Shell脚本
Android作为一款Linux终端,肯定是支持.sh后缀的Shell脚本的运行的, 有时候测试环境准备或者长时间截取复杂的日志等,开发会给到一些Shell脚本. Shell脚本的执行的优势: 快捷高 ...
- 【原创】linux spinlock/rwlock/seqlock原理剖析(基于ARM64)
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...