仅根据lucene中term出现次数较多的文档来计算分数

2024-04-16

我开始研究基于 lucene.net 引擎的简历检索(文档)组件。它工作得很好,它会获取文档并根据

VSM 背后的理念是 查询词出现在 a 中的次数 文档相对于数量 该术语出现在所有 集合中的文档越多 该文件的相关内容是 询问。

Lucene的实用评分函数源自以下内容。

score(q,d)=coord(q,d)·queryNorm(q)· ∑( tf(t in d) ·idf(t)2 · t.getBoost() · norm(t,d) ) 
                                  t in q

in this

  • tf(d 中的 t)与术语频率相关,定义为术语 t 在当前评分文档 d 中出现的次数。给定术语出现次数越多的文档得分越高
  • idf(t)代表逆文档频率。该值与 docFreq(出现术语 t 的文档数量)的倒数相关。这意味着越罕见的术语对总分的贡献越高。

在大多数情况下,这确实非常好,但由于场范数计算,结果不准确

fieldnorm 又名“字段长度规范”值表示该文档中该字段的长度(因此较短的字段会自动增加)。

因此我们没有得到准确的结果。 举个例子,我有 10000 个文档,其中 3000 个文档有 java 和 oracle 关键字。而且每个文档出现的次数都不同。

  • 假设文档 A 在 1000 个单词中获得了 10 java 20 oracle,文档 B 在 50 个单词中获得了 2 java 2 oracle
  • 如果正在搜索查询“java and oracle”,lucene 将返回具有高分的文档 B 由于长度标准化。

由于业务的性质,我们需要检索更多搜索关键字出现的文档,因此我们并不真正关心文档的长度。

因此,一个拥有大量关键字的大简历的人被移至结果下方,并出现了一些小简历。

为了避免这种情况,我需要禁用长度标准化。有人可以帮我弄这个吗??

我附上了卢克结果图像供您参考。

在此图中,包含 java 50 次和 oracle 6 次的文档下移至第 11 位。

但由于 fieldnorm,这个包含 java 24 次和 oracle 5 次的文档是得分最高的。

希望我清楚地传达了信息...如果没有,请问我,我会提供更多信息


您可以禁用长度标准化Field.setOmitNorms(true) http://lucene.apache.org/java/3_0_1/api/core/org/apache/lucene/document/AbstractField.html#setOmitNorms(boolean)

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

仅根据lucene中term出现次数较多的文档来计算分数 的相关文章

  • lua_resume 的 from 参数的含义

    From Lua 5 2 参考手册 http www lua org manual 5 2 manual html lua resume int lua resume lua State L lua State from int nargs
  • 从 C 调用带有字符串参数的 Go 函数?

    我可以从 C 调用一个没有参数的 Go 函数 按照下面的 https github com joeprivacy crefgo hello world 这通过编译go build和打印 Hello from Golang main func
  • 如果文本框不为空,如何添加并显示工具提示文本框 WPF

    需要显示提示 其中包含文本字段中的数据 文本框有数据时出现提示 只需使用绑定到 ToolTipService 附加属性即可 XAML
  • 使用 Xlib 捕获鼠标

    我想编写一个简单的 Xlib 程序来改变鼠标行为 举个例子 反转垂直移动 我在捕获事件时遇到问题 我想要代码 捕获控制器位置的变化 我向上移动鼠标 MotionEvent 计算新的光标位置 new x difference x 设置新的光标
  • 使用 JsonWriter 时,WriteStartConstructor 的用途是什么?

    标题说明了一切 我看到它 及其相应的结尾 吐出以下内容 new Foo 但我不明白什么new实际上是在反序列化时执行的 文档只是说它编写了一个 Json 构造函数 但没有说 Json 构造函数是什么is 此方法是作为增强功能的一部分引入的
  • 接收UDP数据包

    假设我的程序通过网络 UDP 发送 1000 字节 它是否保证接收方将 一批 接收 1000 个字节 或者他可能需要执行多次 读取 直到收到完整的消息 如果后者为真 我如何确保同一消息的数据包顺序不会 混淆 按顺序 或者协议可能保证这一点
  • C++ 中“return *this”是什么意思?

    我正在将 C 程序转换为 C 但这部分让我感到困惑 return this 是什么意思 template lt EDemoCommands msgType typename PB OBJECT TYPE gt class CDemoMess
  • Task.WaitAll 保持循环

    我正在尝试这个异步代码只是为了测试 async 关键字 public async Task
  • 什么触发了java垃圾收集器

    我对 Java 中垃圾收集的工作原理有点困惑 我知道当不再有对某个对象的实时引用时 该对象就有资格进行垃圾回收 但是如果它有对实时对象的引用怎么办 可以说我有一个节点集合 它们再次引用更多节点 List 1 gt Node a gt Nod
  • fgets 和 fread 之间的区别

    我有以下代码 include
  • 为 C# 和 C++ 应用程序编写 DLL

    我需要编写几个 DLL 它们都可以从 C 应用程序和 C 应用程序访问 最初 我认为通过用 C 编写 DLL 并从 C 和 C 应用程序链接到它们可以节省时间 精力 这种方法明智吗 还是应该使用 C 编写 DLL 我的建议是在您最舒服的地方
  • 不区分大小写“包含(字符串)”

    有没有办法让下面的返回为真 string title ASTRINGTOTEST title Contains string 似乎没有过载允许我设置区分大小写 目前我将它们都大写 但这很愚蠢 我指的是i18n http en wikiped
  • 使用 ASP.NET Core Identity 将令牌保存在 Cookie 中

    我想在我的 身份 生成的 cookie 中保存一些内容 我目前正在使用文档中的默认身份设置 启动 cs services Configure
  • JToolBar 放回 GridBagLayout 时出现 IllegalArgumentException

    为什么这段代码会抛出一个IllegalArgumentException当工具栏被拖离 GUI 然后关闭 将其返回到 GUI 时 我可以理解为什么在没有约束的情况下添加组件可能是不合适的 但在这种情况下 工具栏最初添加到面板 使用GridB
  • 如何声明和定义具有推导类型的静态成员?

    我需要定义一个具有复杂 许多模板参数 类型的静态成员 不是 constexpr 因此 希望有这样的东西 struct X static auto x makeObjectWithComplexType 但它不是 C 所以我尝试解决它 并认为
  • 当无法处理指定的情况时,在 switch 语句中抛出异常

    假设我们有一个函数可以在 MVC 应用程序的系统中更改用户的密码 public JsonResult ChangePassword string username string currentPassword string newPassw
  • 如何从 .NET DataGridView 控件单元格值写入文本文件?

    我有以下代码应该循环遍历我的所有行DataGridView 并将其所有单元格值写入文本文件 但是 它输出所有行 但仅输出每行的第一个单元格 而不输出其他三个单元格 string file name C test1 txt var objWr
  • 缓冲区溢出(与)缓冲区溢出(与)堆栈溢出[重复]

    这个问题在这里已经有答案了 可能的重复 堆栈溢出和缓冲区溢出有什么区别 https stackoverflow com questions 1120575 what is the difference between a stack ove
  • 何时使用 const char * 何时使用 const char[]

    我知道它们是不同的 我知道它们有何不同 并且我阅读了我能找到的所有关于char vs char 但所有这些答案都没有告诉我们什么时候应该使用它们 所以我的问题是 你什么时候使用 const char text text 你什么时候使用 co
  • C++ 模板类问题中的类型条件

    使用海湾合作委员会4 2 我有这个条件类型的元模板 template

随机推荐

  • 使用 NumPy 索引数组对 Python 列表进行切片——有什么快速方法吗?

    我有一个常规的list called a 以及一个 NumPy 索引数组b 不 我不可能转换a到 NumPy 数组 有什么方法可以达到与 相同的效果 a b 有效 需要明确的是 这意味着我不想提取每个人int in b由于其性能影响 是的
  • 如何重置测试之间导入的模块

    假设我有一个模块需要在应用程序启动时初始化一次 以传递配置 模块看起来像这样 MyModule js let isInitiazlied const myModule init function isInitiazlied true do
  • 张量流学习中的多元回归输出节点

    我对张量流比较陌生 想使用 tf contrib learn 中的 DNNRegressor 来执行回归任务 但我不想有一个输出节点 而是想要多个 例如十个 如何配置回归器来调整许多输出节点以满足我的需求 我的问题与以下已在 SO 上提出的
  • 如何查看亚马逊 lambda 函数的 console.log 输出

    当你做一个 console log Loading function 在亚马逊 lambda 函数中 它去哪里了 我的设置 API网关 lambda函数nodejs6 10 卷曲https n2tredacted execute api u
  • android跨度点击事件

    好的 这些都是我的问题 我需要使用正则表达式来过滤掉除字母之外的所有内容 然后我需要将找到的单词包含在 word 标签中 有了这个 str str replaceAll pattern 0 现在我正在过滤所有正确的元素 标点符号 数字等 但
  • 催化剂控制器问题

    我刚刚在我的第一个大型项目中使用了催化剂 我想知道我是否按照预期的方式使用了催化剂 我有 Root pm 在该文件中我放置了多个 url 处理程序 每个 url 有一个控制器是最佳实践还是应该考虑分组 Catalyst 的优点之一是它的灵活
  • Rails,将文件上传到服务器时获取文件名

    我在 Rails 3 中使用 AJAX 上传器以及 paper clip 并在此处上传文件 def upload photo Photo create photo gt params file title gt params filenam
  • 有哪些 CSS 属性可以让元素脱离正常流程?

    有哪些 CSS 属性可以让元素脱离正常流程 这些属性可以是 float position absolute 等 这个问题涉及正常流程的所有可能的改变 只有以下属性会影响任何给定元素的正常流程 float right left positio
  • 在共享主机上安装 PHP 扩展

    我需要启用mcrypt https www php net manual en book mcrypt php我的网站上的功能 除了我在共享主机上 运行 Linux 并且显然无权访问php ini文件 似乎确实有安装 PEAR 模块的选项
  • 在 R 中从 MySQL 获取 UTF-8 文本返回“???”

    我一直在尝试从 R 获取 MySQL 数据库中的 UTF 8 文本 我在 OS X 上运行 R 通过 GUI 和命令行都尝试过 其中默认区域设置是 en US UTF 8 并且没有无论我尝试什么 查询结果都显示 对于所有非 ASCII 字符
  • Plotly 中子图的标题

    我正在尝试在 Plotly 中制作 3x3 子图的网格 我正在尝试为每个子图获取标题并在顶部获取主标题 但我似乎无法让它发挥作用 我看到这个很棒的网站 http takwatanabe me data science plotly layo
  • Python multiprocessing.Pool在MacOS和Linux系统上的不同性能

    我是 Python 初学者 我在项目中使用了 multiprocessing Pool 来提高性能 这是我使用 multiprocessing Pool 的代码片段 我在驻留服务器的开头构建池 并在每次服务器收到请求时使用 Pool app
  • 不定长度的数组[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何在未知长度的排序数组中找到随机元
  • MFC:如何在一个函数中捕获对话框每个控件的设置焦点

    我有 n 个对话框 它们具有相同的基本对话框 每个对话框都有自己的控件 编辑框 组合框 列表控件 etc 在基本对话框中 如何设置每个控件的焦点消息 例如 给出一个消息框 text Hello I got focus my ID is d
  • XAMPP:无法启动 Apache (Windows 10)

    我正在使用 XAMPP 并且可以启动 Apache 但是 MySQL php我的管理员 https en wikipedia org wiki PhpMyAdmin start 当我开始时 我收到此错误 10 07 49 Apache Er
  • 无法更改视图中绘制的圆圈的颜色

    我正在尝试更新我在子类中创建的圆圈的颜色UIView通过在类中创建一个方法来更新颜色 如下所示 但颜色不会改变 import UIKit class badge UIView struct mine static var p UIBezie
  • Linux 文件权限的正则表达式(数字表示法)

    我一生都无法找出正确的正则表达式 我正在寻找的是一个正则表达式来匹配 Linux 文件权限的有效数字表示 例如 740 表示全部读取无 777 表示全部全部 到目前为止 我已经尝试过以下操作 strtotest 740 echo strto
  • 如何从视图范围的 JSF bean 获取请求参数?

    我有查看范围bean 应该在 init PostConstruct 上访问请求 URL 中的值并在其生命周期内存储它们 我了解到 为了获得价值http请求 我需要以下代码 ManagedProperty param x private in
  • iOS 相当于 Android 片段/布局

    在 Android 中 您可以使用 Fragments 只开发一款针对手机和平板电脑的应用程序 这样您就可以拥有不同的 UI 您甚至可以仅使用布局并对代码设置一些条件来运行平板电脑或手机逻辑 我需要为 iPhone 和 iPad 开发一个应
  • 仅根据lucene中term出现次数较多的文档来计算分数

    我开始研究基于 lucene net 引擎的简历检索 文档 组件 它工作得很好 它会获取文档并根据 VSM 背后的理念是 查询词出现在 a 中的次数 文档相对于数量 该术语出现在所有 集合中的文档越多 该文件的相关内容是 询问 Lucene