当前位置: 首页 > 知识库问答 >
问题:

用booleanquery确定命中质量的lucene排名

彭兴朝
2023-03-14

我使用的是由termqueries构造的booleanquery,它们都位于同一个字段上,目前都设置在“should”上。

我已经试图弄清楚这个查询的ScoreDoc[]结果对象的排名是如何工作的,但没有找到正确的文档,也许您可以帮助解决以下问题:

共有1个答案

陈誉
2023-03-14

布尔查询对多个查询项的点击次数比只匹配一个查询项的点击次数要高,但请记住,这只是评分算法的一部分。还有许多其他影响可能会抵消这种影响。

由一个布尔查询组合的查询项将其子分数相乘以形成最终分数,因此更多的查询项匹配自然会被更重地考虑。除此之外,还有一个coord因子,当匹配的查询项比例较大时,该因子就会较大,该因子也会乘以分数。

然而,同一查询术语、文档长度、术语rarety和boosts的多个匹配也会影响得分,即使文档不匹配所有术语,也很可能从这些影响中获得更高的得分。

Explanation explain = searcher.explain(myQuery, resultDocNo);
System.out.print(explain.ToString());

要识别与查询匹配的文档片段,可以使用荧光笔,其简单用法可能是:

QueryScorer scorer = new QueryScorer(myQuery);
Highlighter highlighter = new Highlighter(scorer);
String fragment = highlighter.getBestFragment(analyzer, fieldName, myDoc.getField(fieldName));
 类似资料:
  • 问题内容: 我正在玩Python中的PIL库,并且想知道如何确定给定JPG图像的质量。我尝试打开JPG图像并对其进行处理,然后再次保存为原始质量。Image.save让我确定所需的质量: 但我看不出有任何方法可以提取原始内容。现在,我只是在猜测,并通过对’quality’参数进行二进制搜索来尝试具有与输入大小相同的输出文件,但这不是长期可接受的解决方法:) 我也尝试使用:Image.info但大多

  • BooleanQuery用于搜索使用AND, OR或NOT运算符进行多次查询的文档。 Class 声明 (Class Declaration) 以下是org.apache.lucene.search.BooleanQuery类的声明 - public class BooleanQuery extends Query implements Iterable<BooleanClaus

  • 问题内容: 在PHP中,我们(至少是优秀的程序员)总是以小写字母开头的通用变量名称,而以大写字母开头的类变量/对象则区分它们。以相同的方式,我们以小写字母开头的通用文件名,但是包含具有大写字母的类的文件。 例如: Java中的约定是否相同,即对象以大写字母开头,其余对象以小写字母开头?还是像我在其他地方读过的所有内容都以小写字母开头? 问题答案: 通常,所有变量都以小写字母开头: 有些人喜欢在所有

  • 问题内容: 我有一个包含3个字段的表,我想根据user_id和game_id对列进行排名。 这是SQL Fiddle:http ://sqlfiddle.com/#!9/883e9d/1 我已经在桌子上了: 预期产量: 到目前为止,我的努力: 编辑:( 来自OP 注释):排序基于的降序 game_detail的顺序 问题答案: 在派生表(子句内的子查询)中,我们对数据进行排序,以使所有具有相同值的

  • 所以我想找到关于欧拉计划的问题3的答案。我需要确定给定数的最大素数因子。 引述欧拉项目:“13195的素数因子是5、7、13和29。600851475143中最大的素数因子是什么?” 我已经构建了我的代码,它在任何int大小的东西上都能完美地工作。但是由于它们给出的巨大数字,我的代码存在转换问题。 起初,我尝试切换到长变量和长数组,但我得到了错误:“可能从long到int的有损转换” 那么,我如何

  • 我在xslt中需要这个,但是xmlns:s=“{$service-uri}”没有提取: 如何提取名称空间定义中的service-uri变量?扎梅克