如何确定文档是否与查询匹配,例如规范化 elasticsearch 分数?

2024-01-11

Elasticsearch 计算的分数提供了文档之间的排名,但它并不能说明文档是否与请求匹配。目前,第一个文档可以匹配所有字段或仅匹配一个字段。分数提供的唯一信息是它是最佳匹配。

是否有可能获得关于查询的标准化分数?例如,得分 1 表示文档与查询完美匹配,得分 0.1 表示文档匹配较差。


简而言之,不,不可能获得查询的真正标准化分数,但可以获得在许多情况下有效的足够好的分数标准化。

获得一个分数来判断文档是否适合查询的问题是找到最适合该查询的文档,从而找到最大分数。使用 Elasticsearch 和大多数(如果不是全部)指标,最高分数不受限制。

即使使用简单的匹配查询,从技术上讲,您也可以通过无限次重复查询术语的文档达到无限分数。如果没有分数限制,就不可能获得真正的标准化分数。

但我们并没有失去所有的希望。您可以根据应该获得最高分数的虚假理想文档进行标准化,而不是针对最佳得分进行标准化。例如,如果您要查询两个字段name and occupation带有查询条件Jane Doe and Cook您理想的文档可以是

{
    "name": "Jane Doe",
    "occupation": "Cook"
}

如果索引包含一个文档,例如名称为Jane Jane Doe那么理想的文档可能无法获得最高分。如果查询的字段相对较短,您可能不必担心术语重复。如果您的字段包含许多术语,您可能会决定复制一些在理想文档中常见的术语。如果目标是确定文档是否匹配良好,那么文档得分高于理想文档通常不是问题。

好消息是,如果您至少使用 Elasticsearch 6.4,则无需索引虚假文档即可获取其查询分数。您可以使用端点_脚本/无痛/_执行 https://www.elastic.co/guide/en/elasticsearch/painless/6.4/painless-execute-api.html以获得理想文档的分数。

GET _scripts/painless/_execute
{
    "script": {
        "source": "_score"
    },
    "context": "score",
    "context_setup": {
        "index": <INDEX>,
        "document": <THE_IDEAL_DOCUMENT>,
        "query": <YOUR_QUERY>
    }
}

请注意,在计算分数时,将考虑虚假文档的字段统计信息,例如包含某个字段的文档数量和包含查询术语的字段数量。如果您有很多文档,这应该不是问题,但对于非常不频繁的字段或术语(例如低于 20),您可能会注意到与之前索引的文档相比,理想文档的分数较低。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确定文档是否与查询匹配,例如规范化 elasticsearch 分数? 的相关文章

  • 如何编写Elasticsearch多个必须脚本查询?

    我想使用查询来比较多个字段 我有字段 1 到 4 我想搜索字段 1 大于字段 2 的数据 并且下面的查询工作正常 size 0 source field1 field2 field3 field4 sort query bool filte
  • ElasticSearch 定义自定义映射与默认“_doc”映射冲突

    尝试创建自定义映射类型时会发生此问题 为第一个插入弹性创建自定义映射后想要创建 doc映射类型和冲突就发生在这里 第一步我创建一个映射 mappings properties field1 type keyword field2 type
  • 在 ElasticSearch API 应用程序中找不到 NodeBuilder

    我正在尝试实现 Elasticsearch API 我的系统接受 nodeBuilder 时出现错误 这是代码 import org elasticsearch action index IndexResponse import org e
  • 在流浪机器中使用elasticsearch设置graylog2服务器

    我正在尝试在本地开发计算机上安装graylog2 服务器 但遇到了elasticsearch 设置问题 我的elasticsearch作为服务安装在我的开发机器上运行的vagrant机器上 所以我的elasticsearch没有安装在127
  • 弹性搜索文档计数

    我正在运行 2 2 版本的 Elastic 搜索 我已经创建了索引并加载了示例文档 我发现其中有些问题 当我给予 GET index type count 我得到了正确的答案 count 9998 shards total 5 succes
  • 无法使用 java 8 在 Windows 10 上安装 elasticsearch 5.1.1

    我正在尝试在安装了 java 8 111 的 Windows 10 笔记本电脑上安装 ElasticSearch 5 1 1 当我尝试安装 Elastic search 时触发错误 C Users 用户名 Downloads elastic
  • Elasticsearch 关于“空索引”的查询

    在我的应用程序中 我使用了几个elasticsearch索引 它们在初始状态下不包含索引文档 我认为这可以称为 空 该文档的映射是正确且有效的 该应用程序还有一个包含实体的关系数据库 这些实体可能具有在 elasticsearch 中关联的
  • Elastic Beanstalk 添加多个 ssl 证书

    我有一个 Docker Django api 应用程序 可以从多个域 abc xyx com 或 def lmn com 调用 我已从 Elastic beanstalk 中的配置控制台成功添加了 abc xyz com 的 ssl 证书
  • Elasticsearch:根据类型对不同字段进行排序

    我的索引中有两种类型 Event and City 我正在尝试按日期将它们全部排序 但是 每种类型的日期字段名称都不同 为了Event该值是在updated at领域和City日期是在update at其嵌套对象之一中的字段city eve
  • Elastic Search 索引经常被删除[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在 google cloud 上对个人项目运行弹性搜索 并将其用作我的应用程序的搜索索引 从最近三天开始 索引就被神秘地删除了 我不知
  • 自动完成建议中的输出字段

    当我想在 elasticsearch 中索引文档时 会发生此问题 message MapperParsingException failed to parse nested IllegalArgumentException unknown
  • 在 ElasticSearch 中,我应该对单独但相关的实体使用多个索引吗?

    添加索引的开销有详细记录 但我无法找到有关何时针对要建立索引的各种文档类型使用多个索引的良好信息 这是一个说明问题的通用示例 假设我们有以下实体 产品 名称 产品 ID 产品类别 ID 商店列表 产品类别 名称 ProductCategor
  • Elasticsearch 日期范围交集

    我在弹性搜索中存储类似以下信息的信息 timeslot start at 2013 02 01 timeslot end at 2013 02 03 鉴于我有另一个日期范围 例如 从用户输入给出 我想搜索相交的时间范围 与此类似 确定两个日
  • Elasticsearch:带有停用词消除功能的带状疱疹

    我正在尝试实现一个 Elasticsearch 映射来优化大量文本中的短语搜索 根据中的建议本文 http www elasticsearch org blog searching with shingles 我使用 shingle 过滤器
  • 在 Must bool 查询中使用正则表达式搜索与使用 Must_not bool 查询

    我想进行类似的查询 获取包含 不包含给定字段的 某些值 的所有文档 获取给定字段的值等于 不等于 某个值 的所有文档 根据我的映射 字段是字符串类型 这意味着它们支持关键字和全文搜索 例如 myField type text fields
  • 如何在没有部署 K8S 的情况下重启 pod?

    我部署了一个弹性搜索 https www elastic co elasticsearch使用此命令在 K8S 上集群helm install elasticsearch elastic elasticsearch 我可以看到 Pod 正在
  • 使用 python 聚合 elasticsearch-dsl 中的字段

    有人可以告诉我如何编写 Python 语句来聚合 求和和计数 有关我的文档的内容吗 SCRIPT from datetime import datetime from elasticsearch dsl import DocType Str
  • Elasticsearch GET API 获取分片大小

    在 Elasticsearch 2 3 3 中 有没有办法使用返回 JSON 的 GET API 获取分片大小 目前我找到了以下几种获取shard size的方法 这两种方法都存在问题 recovery gt 使用 JSON 进行响应并提供
  • 如何查询elasticsearch大于和小于?

    我想获取 1000 到 2000 之间的值 我尝试了以下查询 query bool filter range price gte 1000 price lte 2000 但这并没有给出令
  • ElasticSearch:从 Painless 脚本中的嵌套字段计算 arcDistance

    我需要计算 Painless 脚本内的弧距 但在这种情况下还没有找到访问 geo API 的方法 即 第一点作为参数传递给脚本 这意味着我只获得原始值 第二点是从嵌套文档中读取的 这意味着我无法使用doc myGeoField value

随机推荐

  • Angular2获取被点击的元素id

    我有这样的点击事件
  • Firebase 响应太慢

    大家好 我正在使用 Firebase 实时数据库为我的 React js Web 应用程序获取一些数据 有一个useState called Corr User应该存储正确用户名的值 我有一个function从 Firebase 获取用户名
  • 变量值列表的 Tensorflow 特征列

    从 TensorFlow 文档中可以清楚地了解如何使用tf feature column categorical column with vocabulary list创建一个特征列 它将一些字符串作为输入并输出一个单热向量 例如 voca
  • 将对象从 Fragment 传递到 Activity

    问题 如何将对象从片段传递到活动 根据活动的请求 背景 我正在使用 Android Studio 并通过 新建 Android 活动 向导设置了一个新的选项卡式活动 然后我定义了 5 个片段 每个片段包含不同的输入集 编辑文本等 然后 每个
  • 链接到适用于 Android 的工作 webRTC 库

    Google Play 最近几天有一个关于我使用的 WebRTC 库的新错误 警告 我使用这个库将近一年了 google webrtc 1 0 32006 aar 我的应用程序仍然可用 但他们要求更新库 这通常意味着他们将来会阻止使用该库的
  • 如何清除实体框架 ICollection 中的所有元素?

    我在使用 Clear 从实体框架中的集合中删除所有元素时遇到问题 考虑经常使用的博客和帖子示例 public class Blog public int Id get set public string Name get set publi
  • 无法在 asp.net 母版页文件中放置断点

    我有一个 MVC Web 应用程序 我在下面的第 16 行中收到 对象引用未设置为对象实例 错误 这是一个母版页文件 当我尝试在该行或文件中的任何位置放置断点时 出现 这不是断点的有效位置 错误 我已经单击了每一行 但无法放置一个断点 我确
  • StudentSubmissions.Patch UpdateMask 错误

    尝试在 Google Apps 脚本中使用 Classroom API 的 StudentSubmissions Patch 部分并继续运行时遇到此错误 updateMask updateMask 只能包含 draftGrade 或 指定等
  • 如何将 include/lib 目录添加到 MSVC 2015 解决方案中的所有项目?

    我有一个很大的解决方案 在每个项目中添加 更改包含目录非常繁琐 是否可以一步为所有项目设置公共包含文件夹 Thanx 不直观的第一步是在 解决方案资源管理器 窗口中选择多个项目 如有必要 请先折叠项目节点 单击第一个项目 然后按住 Shif
  • svn错误413请求实体太大的原因是什么?

    有时 我在更新 svn 存储库时收到错误 413 请求实体太大 一旦收到此错误 每次我尝试更新本地工作副本时都会继续出现此错误 新的结账方式可以解决问题 但是很不方便 该项目超过 30 GB SVN 存储库托管在外部 过去 这种情况在多台不
  • MySQL 表中的最大列数[重复]

    这个问题在这里已经有答案了 我对 MySQL 还很陌生 我有几个问题 1 有多少 最多 个 可以在 MySQL 表中创建列 2 有多少 最大 数量 可以在 MySQL 数据库中创建许多表 1 每个表大约有 4 096 列 2 mySQL有数
  • 如何在android中显示欢迎屏幕?

    您好 我想要一个带有我的徽标的屏幕 该屏幕应显示 2 3 秒 然后应进入主程序 我怎样才能实现这个 这是一个简单的splashScreen实现 public class SplashScreen extends Activity priva
  • x86/x64 添加位移寻址

    我正在为 x86 x64 CPU 指令编写一个编译器 但我似乎无法弄清楚人们所说的 位移 地址是什么意思 例如 添加指令详细信息如下 http www c jump com CIS77 CPU x86 X77 0150 encoding a
  • 动画搜索栏进度

    我的屏幕有 4 个搜索栏 如下图所示 如果用户移动 B C 或 D 我计算三者的平均值并将 A 的进度设置为平均值 这是最容易的部分 我想做的是为进度条 A 设置动画 使其不会一次性跳跃 例如从 25 75 为 A 制作动画的推荐方法是什么
  • 如何使用异步方法对 ViewModel 进行单元测试。

    我不知道从哪里开始 但让我简要介绍一下我现在的处境以及我想要实现的目标 我对 MVVM 上的单元测试相当陌生 并且在测试使用 PRISM 委托命令属性公开的命令时遇到困难 我的委托命令调用必须等待的异步方法 以便我可以获得实际结果 下面是我
  • 无法获取httpResponse内容

    我没有设法从 android 模拟器查询 Web 服务 之前我有一个 UnresolvedHostException 但这没关系 现在我可以更进一步了 我在 HttpResponse 的实体中没有返回任何内容 长度为 1 String ur
  • 从 pandas 数据框索引创建列

    我有一个数据框 我想将索引 第一级 中的数据转换为列 实际上我的 df 看起来像这样 col1 CoI AK 0 1 1 31 2 NaN BB 0 5 1 31 2 NaN 我想把它变成这样 col1 CoI 0 1 AK 1 31 AK
  • 根据特定值创建新变量

    我阅读了正则表达式和 Hadley Wickham 的stringr and dplyr包 但不知道如何让它工作 我在数据框中保存了图书馆流通数据 索书号作为字符变量 我想将最初的大写字母作为一个新变量 并将字母和句点之间的数字作为第二个新
  • 如何使用phonegap javascript获取IP地址

    如何使用phonegap javascript 获取IP 地址 我必须将此 IP 地址作为查询字符串发送到 php 页面 有什么建议吗 干得好 http simonmacdonald blogspot in 2012 08 so you w
  • 如何确定文档是否与查询匹配,例如规范化 elasticsearch 分数?

    Elasticsearch 计算的分数提供了文档之间的排名 但它并不能说明文档是否与请求匹配 目前 第一个文档可以匹配所有字段或仅匹配一个字段 分数提供的唯一信息是它是最佳匹配 是否有可能获得关于查询的标准化分数 例如 得分 1 表示文档与