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

lucene在搜索时是否遍历整个倒排索引?

邢宏浚
2023-03-14

例如,如果一个单词'a'的倒排索引包含10000个文档,在搜索'a'时,如果Lucene搜索了10个结果,那么Lucene会遍历这10000个文档,然后返回10个结果吗?还是当检索到足够的结果时,即使它没有到达倒排索引的末尾,也会返回10个结果?

共有1个答案

权弘新
2023-03-14

Lucene确实会访问所有10k场比赛,计算每一场比赛的得分,然后放在堆中,以计算前k次命中。

Lucene/Misc模块有一个SortingMergePolicy,它允许您根据某个字段(例如,在web索引中,这可以是页面排名)对合并的段进行排序。这样,如果希望在搜索时根据该字段对文档进行排序(或者更一般地,如果排序顺序与该字段的值密切相关),则一旦收集到足够的匹配项,就可以停止收集每个段的文档。

目前这是一个非常专业的特性,但是我们计划让它更容易使用,请参见https://issues.apache.org/jira/browse/lucene-6766。

 类似资料:
  • 在测试此文本时,我在要在文本中搜索的列上创建了lucene(3.0.1)索引: 如果我按关键字搜索,它会给出结果,但按 我正在使用standardAnalyzer: 因为已设置,它应创建令牌,并且应存在$GLD。Analyzer将从文本中删除停止字,因为word也将在该过程中删除。

  • 编写一个函数,如果给定的二叉搜索树包含给定的值,则返回1,否则返回0。 例如,对于以下树: N1(值:1,左:null,右:null) n2(值:2,左:n1,右:n3) N3(值:3,左:null,右:null) 对contains(&n2,3)的调用应返回1,因为根位于n2的树包含编号3。 函数应该返回1,然而,它返回0或者根本不返回。

  • bugu-mongo 2.x版本集成了Lucene的功能。当往MongoDB中新增一个Document时,能自动为该Document建立Lucene索引。相应的,当MongoDB中的Document被修改、删除时,对应的Lucene索引也会修改、删除。 另外,bugu-mongo还提供了对Lucene搜索的支持。根据Lucene索引进行搜索的时候,搜索结果能自动转换成对应的Entity对象。 在L

  • 使用Lucene libs,我需要对现有的搜索函数进行一些更改:假设以下对象: 名称:“端口对象1” 数据:"TCP(1)/1000-2000" 查询(或搜索文本)为“1142”,是否可以在数据字段内搜索“1142”并找到端口对象1,因为它指的是1000-2000之间的范围? 我只找到了数值范围查询,但这不适用于本例,因为我不知道范围。。。 参考以上代码。查询"1200"应该找到第一个doc。 L

  • 我的任务是使用lucene在我们的产品表中搜索。我已经创建了一个索引,正在使用带有多个字段的QueryParser进行搜索,但结果不是我所需要的。我有一个存储为LM10的产品,但如果搜索词是LM 10,我希望能够找到它,但如果搜索词是Fred LM10或Fred LM 10,它也必须能够匹配。你知道我如何在Lucene做到这一点吗。 提前谢谢