Block-Max-Maxscore(Lucene 9.10.0)

news2024/11/28 0:48:06

Lucene中基于论文:Optimizing Top-k Document Retrieval Strategies for Block-Max Indexes 实现了Block-Max-Maxscore (BMM) 算法,用来优化关键字之间只有OR关系,并且minShouldMatch <= 1时的查询。比如有查询条件为:term1 OR term2 OR term3,那么文档中至少包含其中一个term就认为是满足查询条件。

算法概述

该算法通过对每个term的倒排表排序,排序规则为最大分数/倒排表长度,将高分倒排表作为必要倒排表,低分倒排表作为非必要倒排表。先遍历必要倒排表的文档ID,计算部分评分,如果部分评分加上非必要倒排表的最大分数之和仍低于阈值,则跳过该文档。否则,进行完整评分,包括非必要倒排表的评分。这样,算法减少了不必要的计算操作,因为它避免了对所有文档进行评分,只关注最有可能进入top-k结果的文档。

Lucene中BMM算法的处理逻辑基本跟论文中是一致的,结合上文的算法概述,我们通过以下三个步骤介绍该算法在Lucene中的实现:

  1. 计算最大分数(Maxscore)
  2. 选择必要倒排表(essential posting)跟非必要倒排表(non-essential posting)
  3. 遍历必要倒排表中的文档,选择合适的文档号

算法实现

计算最大分数(Maxscore)

算法名Block-Max-Maxscore中的block-max指的就是将倒排表划分为多个连续区间,每个区间即一个block最大分数就是在每个block中最大的文档打分值。

由于在查询期间计算这个区间内所有的文档打分值然后选出最大值是昂贵的,因此Lucene提供了Impact机制,使得在索引期间先挑选出部分候选者,能保证最高的文档打分值只会出现于这些候选者中。在查询期间计算这些候选者,找出最大分数

关于Impact的完整介绍可以阅读文章:索引文件的读取(十二)、ImpactsDISI。本文中我们简述下Impact机制。

Impact

图1:

从Lucene打分公式的注释可以看出:

  • 如果norm相等,那么freq较大对应的文档打分值会相等或者更高
  • 如果freq相等,那么norm较小对应的文档打分值会相等或者更高

因此在索引期间,我们不需要真正的调用打分公式,而是简单的比较term在每一篇文档中的freq和norm,就可以筛选出候选者。也就是freq相等时,norm最小,或者norm相等时,freq最大的文档作为候选者,将他们的freq跟norm信息写入到索引文件中:

图2:

随后在查询阶段,我们就可以根据索引文件中所有的freq和norm,调用图1的打分公式,计算出最终的最大分数

完整内容见:Block-Max-Maxscore(Lucene 9.10.0) | Lu Xugang的小屋

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1851617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024/6/22 英语每日一段

France is the only country in Europe with an EPR that covers the textile industry. Critics say the policy does little for “end-of-line” countries such as Ghana because the fee paid by clothing producers is low at just €0.06 for each item, and the funds …

小米红米全机型TWRP下载刷入教程-获取root权限--支持小米14/红米K7Pro/红米Turbo3等机型

刷机注意&#xff1a; 本教程为小米红米全机型专用TWRP_Recovery合集&#xff0c;ROM乐园独家首发整理。请确保你的电脑能正确连接你的手机&#xff0c;小米红米手机需要解锁BL&#xff0c;请参照下面教程 小米MIUI澎湃OS解锁BL教程&#xff1a;小米手机官方解锁BootLoader图文…

低浓度废锡回收后的几种处理方法

低浓度废锡回收后&#xff0c;处理方法的选择对于资源的有效利用和环境保护具有重要意义。以下是几种常见的低浓度废锡回收后的处理方法&#xff0c;结合相关数字和信息进行详细介绍&#xff1a; 一、化学法回收 化学法回收是低浓度废锡回收的重要方法之一。其中&#xff0c;酸…

FlowUs AI的使用教程和使用体验

FlowUs AI 使用教程 FlowUs AI特点使其成为提升个人和团队生产力的有力工具&#xff0c;无论是在学术研究、内容创作、技术开发还是日常办公中都能发挥重要作用。现在来看看如何使用FlowUs AI吧&#xff01; 注册与登录&#xff1a;首先&#xff0c;确保您已经注册并登录FlowU…

OpenCV中的圆形标靶检测——findCirclesGrid()(三)

前面说到cv::findCirclesGrid2()内部先使用SimpleBlobDetector进行圆斑检测,然后使用CirclesGridClusterFinder算法类执行基于层次聚类的标靶检测。如下图所示,由于噪声的影响,SimpleBlobDetector检出的标靶可能包含噪声。 而CirclesGridClusterFinder算法类会执行基…

【for循环】最大跨度

【for循环】最大跨度 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 【参考代码】 #include <iostream> using namespace std; int main(){ int n;int max 0, min 100;cin>>n;for(int i1; i<n; i1){int a;cin>>a;if(a>max){max a;}i…

Android使用MPAndroidChart 绘制折线图

效果图&#xff1a; 1.导入依赖 1.1在项目根目录下的build.gradle文件中添加代码&#xff08;注意不是app下的build.gradle&#xff09;&#xff1a; maven { url https://jitpack.io } 1.2在app下的build.gradle中的依赖下添加&#xff1a; implementation com.github.PhilJa…

邀请函 | 人大金仓邀您相聚第十三届中国国际国防电子展览会

盛夏六月 备受瞩目的 第十三届中国国际国防电子展览会 将于6月26日至28日 在北京国家会议中心盛大举办 作为数据库领域国家队 人大金仓 将携系列行业解决方案 和创新实践成果亮相 期待您莅临指导 ↓↓↓↓↓↓ CIDEX 2024 中国国际国防电子展览会&#xff08;简称CIDEX&#xf…

信息安全基础知识(完整)

信息安全基础知识 安全策略表达模型是一种对安全需求与安全策略的抽象概念表达&#xff0c;一般分为自主访问控制模型&#xff08;HRU&#xff09;和强制访问控制模型&#xff08;BLP、Biba&#xff09;IDS基本原理是通过分析网络行为&#xff08;访问方式、访问量、与历史访问…

力扣每日一题 6/19 排序+动态规划

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 2713.矩阵中严格递增的单元格数【困难】 题目&#xff1a; 给你一个下标从…

PHPMailer发送的中文内容乱码如何解决

一&#xff1a; PHPMailer sdk 文件中有个设置默认编码的位置&#xff1a; vendor/phpmailer/phpmailer/src/PHPMailer.php 二&#xff1a; 实际业务代码中&#xff1a; require /sdk/PHPMailer/vendor/autoload.php;$mail new PHPMailer(true);try {//Server settings$mai…

AST小工具|编写一个通用的js混淆代码美化工具

关注它&#xff0c;不迷路。 本文章中所有内容仅供学习交流&#xff0c;不可用于任何商业用途和非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请联系作者立即删除&#xff01; 一.问题 如题&#xff0c;如何编写一个通用的js混淆代码美化工具&…

【C#上位机应用开发实战】—— UI界面设计与实践代码

在C#上位机应用开发中&#xff0c;UI界面设计是至关重要的一环。一个好的UI设计不仅可以提升应用的用户体验&#xff0c;还可以提高应用的易用性和效率。本文将介绍一些UI界面设计的实战经验和技巧。 在这个示例中&#xff0c;我们创建了一个名为MainForm的窗体类。该窗体包含了…

全流程FVCOM水环境、污染物迁移、水交换、水质、潮流、温盐、波浪及泥沙数值模拟

近年来&#xff0c;随着计算技术的发展和对海洋、水环境问题认识的加深&#xff0c;数值模拟技术在海洋、水环境等科学研究中的应用越来越广泛。FVCOM因其独特的优点&#xff0c;成为研究海洋动力过程、污染物扩散、水质变化等问题的重要工具。作为一种基于有限体积法的数值模型…

CVPR2023论文速览Transformer

Paper1 TrojViT: Trojan Insertion in Vision Transformers 摘要原文: Vision Transformers (ViTs) have demonstrated the state-of-the-art performance in various vision-related tasks. The success of ViTs motivates adversaries to perform backdoor attacks on ViTs.…

全面的WAS存储权限管理方案,了解一下

WAS存储权限管理通常指的是对Windows Azure Storage&#xff08;WAS&#xff09;的存储设备进行权限控制和管理。在企业中&#xff0c;随着数据量的飞速增长&#xff0c;对存储设备的安全性、效率和成本的关注也日益增加。有效的WAS存储权限管理可以确保数据的安全性&#xff0…

Python | Leetcode Python题解之第166题分数到小数

题目&#xff1a; 题解&#xff1a; class Solution:def fractionToDecimal(self, numerator: int, denominator: int) -> str:if numerator % denominator 0:return str(numerator // denominator)s []if (numerator < 0) ! (denominator < 0):s.append(-)# 整数部…

Redis大key有什么危害?如何排查和处理?

什么是 bigkey&#xff1f; 简单来说&#xff0c;如果一个 key 对应的 value 所占用的内存比较大&#xff0c;那这个 key 就可以看作是 bigkey。具体多大才算大呢&#xff1f;有一个不是特别精确的参考标准&#xff1a; String 类型的 value 超过 1MB 复合类型&#xff08;Li…

Magento1与Magento2的区别

本人接触magento有些年头了。。。 2012年开始用magento 1.7。2016年开始用magento2.0。 截止到目前。M1最新版本是1.9.3.3。 M2最新版本是2.2.2。 想当年第一次接触magento的时候&#xff0c;是跟同事一起&#xff0c;网上下载的Alan Storm的深入理解magento系统&#xff0c;…

VB计算圆柱体积和表面积

已知圆半径和圆柱的高&#xff0c;计算圆柱体积和表面积。 Public Class Form1Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.ClickConst PI 3.14159Dim r As Integer, h As IntegerDim t As Single, s As Singler Val(TextBox1.Text)h V…