Elasticsearch - 如果术语出现频率越高,得分越高

2024-03-28

我有 2 个文档,正在搜索关键字“Twitter”。假设两个文档都是带有“标签”字段的博客文章。

文档 A 在“标签”字段中只有 1 个术语,它是“Twitter”。 文档 B 在“标签”字段中有 100 个术语,但其中 3 个是“Twitter”。

尽管文档 B 的频率较高,但 Elastic Search 给文档 A 的评分较高。但分数被“稀释”了,因为它有更多的术语。由于文档 B 的搜索词出现频率较高,我如何给它更高的分数?

我知道 ElasticSearch/Lucene 根据文档中的术语数量执行一些标准化。如何禁用此标准化,以便文档 B 获得更高的分数?


正如另一个答案所说,看看在单个分片上是否有相同的结果会很有趣。我认为你会的,这取决于标签字段的规范,在使用 tf/idf 相似度(默认)计算分数时会考虑到该规范。

事实上,lucene 确实考虑了术语频率,换句话说,术语在字段中出现的次数(在您的例子中为 1 或 3),以及倒排文档频率,换句话说,术语在字段中出现的频率如何。索引,以便将其与查询中的其他术语进行比较(在您的情况下,如果您搜索单个术语,则没有任何区别)。

但是还有另一个称为规范的因素,它奖励较短的字段并考虑最终的索引时间提升,这可以是每个字段(在映射中)甚至每个文档。您可以验证规范是否是结果的原因,在搜索请求中启用解释选项并查看解释输出。

我想第一个文档仅包含该标签这一事实使得它比多次包含该标签但也包含很多标签的其他文档更重要。如果您不喜欢这种行为,您可以在标记字段的映射中禁用规范。如果该字段是,则应默认启用"index":"analyzed"(默认)。您可以切换到"index":"not_analyzed"如果您不希望分析您的标签字段(这通常是有意义的,但取决于您的数据和域)或添加"omit_norms": true标签字段映射中的选项。

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

Elasticsearch - 如果术语出现频率越高,得分越高 的相关文章

随机推荐

  • HttpWebRequest 抛出 404 异常

    我发现 HttpWebRequest 对不存在的资源抛出 WebException 在我看来 这很奇怪 因为 HttpWebResponse 有 StatusCode 属性 NotFount 项存在 您认为这有什么原因吗 或者这只是开发人员
  • 为什么 .append() 方法不适用于字符串,它们的行为不像列表吗?

    即使字符串实际上是字符常量列表 为什么此语句会产生错误 string name string name append hello word 我希望它能起作用的原因是 当我们使用 for 循环时 我们可以使用以下语句 for i in str
  • 方案按引用传递

    如何在方案中通过引用传递变量 我想要的功能的示例 define foo lambda x set x 5 define y 2 foo y display y outputs 5 另外 有没有办法通过引用返回 See http commun
  • oAuth 实现:当前域重要吗?

    我是一名前端开发人员 帮助用户体验团队开发浏览器插件的界面 该插件基于 HTML CSS JS 需要身份验证 目前 我们的线路中有标准的 u p 字段 但客户想知道是否可以进行社交登录 由于插件的接口被注入到用户访问的每个页面中 这意味着身
  • “copyfiles”是标准的 Ant 任务吗?

    我有一个 NetBeans 项目 我正在尝试从命令行手动编译ant 当在安装了 NetBeans 的同一台计算机上运行时 它可以完美运行 但是 如果我跑ant在中央持续集成服务器 未安装 NetBeans 上 它在
  • WordPress 获取自定义帖子类型的分类列表

    我正在为我的 WordPress 网站使用 视频 主题 在此主题中 定义了视频帖子类型和 视频类别 分类法 这是分类法的注册代码 add action init custom posttype menu wp admin1 function
  • 状态模式与 ENUM

    有时需要支持对象的状态 据我了解有两种方法 枚举 简单 STATE模式 OC原理 显然需要使用状态模式来达到这样的目的 我不确定 但是阅读其他代码时 我经常遇到的只是枚举而不是状态模式 状态模式有权力吗 通常 ENUM 方法涉及某种状态和转
  • 在保护模式下读取键盘

    我正在尝试制作 PS 2 键盘控制器 但无法正常工作 outb 0x60 0xED outb 0x60 2 Turn on CapsLock LED doesn t works char c 0 while c 1 if inb 0x60
  • 如何正确清除singleTop Activity中的意图数据?

    场景是 在清单中声明了 singleTop 的活动 这个活动被称为带有一些额外的内容 我能够清除意图数据并能够翻转屏幕等 而无需调用原始意图 问题是 当系统终止该活动并且用户返回该活动时 它会使用创建该活动的原始意图重新启动 我该如何删除这
  • 获取用于 Azure Web PubSub Rest API 的 JWT 承载令牌进行身份验证

    我正在开发一个项目 其中我通过 Azure Web PubSub 服务构建一个发布 订阅系统 JavaScript 客户端 订阅者 通过套接字连接 能够接收 Hub 上和 Group 中发布的消息 为此 我遵循了本教程 https lear
  • 如何指定浮点数的舍入模式?

    我想将浮点数四舍五入到最接近的整数 当存在 最接近的整数 时 趋向正无穷大 use std num Float fn main assert eq 0 0 0 5 round fails 但是 文档round say 将中途情况舍入到远离
  • Windows XP 性能监视器应用程序 (perfmon) 中缺少处理器/内存计数器

    Perfmon 是一个 Windows 实用程序 可通过测量系统计数器帮助开发人员找到应用程序中的瓶颈 我正在读一本性能监控教程 http adminfoo net 2007 04 windows perfmon top ten count
  • 使用串口通过 Arduino 将多个值发送到 Raspberry

    我有一个关于 Arduino 和 Raspberry Pi 之间串行通信的问题 事实上 我想使用 Arduino 将 2 个变量发送到 Raspberry Pi 并以不同的方式使用它们 这是我的 Arduino 草图 int one 1 i
  • 格式化 HDFS 时出现 UnknownHostException

    我已经使用以下命令在伪分布式模式下在 CentOS 6 3 64 位上安装了 CDH4指示 https ccp cloudera com display CDH4DOC Installing CDH4 on a Single Linux N
  • 如何使用 Python 在网格中创建 10 个随机 x、y 坐标

    我需要创建一个 8x8 网格 并将 10 个硬币分布在网格上的随机位置 我面临的问题是 randint 函数有时会生成相同的随机坐标 因此只生成 9 或 8 个硬币并放置在网格上 我怎样才能确保这种情况不会发生 干杯 这是我到目前为止的代码
  • 在 SpannableStringBuilder 中对齐位图

    如何将位图与 SpannableString 中的文本对齐 SpannableStringBuilder ssb new SpannableStringBuilder arr messages get position String msg
  • CloudFront 分配未显示为 Route53 别名目标

    我正在尝试添加指向我的 Cloudfront 分发的路线 53 记录集 但是 当我在路由 53 中选择 创建记录集 并单击后续面板中的别名目标时 未列出云前端分布 我得到的只是 没有可用的目标 我的发行版已创建并已启用 并且正在运行 我已在
  • ChromeDriver 2.33 的 driver.manage().window().maximize() 问题

    ChromeDriver 2 33 的发行说明表示 修复了导致调整大小 定位窗口命令在 Chrome 62 上失败的错误 但是当我使用 Chrome 62 浏览器时这似乎仍然是一个问题 使用 chrome 驱动程序最大化 chrome 窗口
  • 如何在 PHP 中设置 $PATH?

    我目前正在开发自己的小项目 但有一个小问题 我想将 PATH 环境变量设置为 bin 这样当我使用exec 和类似的功能 它只会搜索该目录中的二进制文件 除非我明确告诉它 我已经尝试过了putenv 除非我启用了安全模式 否则它将无法工作
  • Elasticsearch - 如果术语出现频率越高,得分越高

    我有 2 个文档 正在搜索关键字 Twitter 假设两个文档都是带有 标签 字段的博客文章 文档 A 在 标签 字段中只有 1 个术语 它是 Twitter 文档 B 在 标签 字段中有 100 个术语 但其中 3 个是 Twitter