使用 Apache Lucene 进行布尔查询的结果编号

狼丛

在对 Apache Lucene v7.5 进行基准测试时,我注意到一个奇怪的行为:我使用 Lucene 和 SimpleAnalyzer(没有停用词,没有词干)索引了英文维基百科转储(5,677,776 个文档)

然后我使用以下查询搜索索引:

  • 点击数 = 5,382,873
  • 谁总点击数 = 1,687,254
  • who totalHits=5,411,305
  • “谁”总点击数 = 8,827

对于布尔查询结果数量的谁是既比单项结果数量较大,为单一期限的结果数,当它应该比都较小。

对此有解释吗?

代码片段:

analyzer = new SimpleAnalyzer();
MultiFieldQueryParser parser = new MultiFieldQueryParser(new String[]{"title", "content","domain","url"},analyzer);

// Parse
Query q = parser.parse(querystr);

// top-10 results
int hitsPerPage = 10;

IndexReader indexReader = DirectoryReader.open(index);
IndexSearcher searcher = new IndexSearcher(indexReader);

// Ranker
TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage);

// Search
searcher.search(q, collector);

// Retrieve the top-10 documents
TopDocs topDocs=collector.topDocs();

ScoreDoc[] hits = topDocs.scoreDocs;
totalHits=topDocs.totalHits;


System.out.println("query: "+querystr + " " + hits.length+" "+String.format("%,d",totalHits));
马茨林德

解释是默认运算符是OR而不是AND您假设的。搜索the who具有或者返回文件thewho或两者兼而有之。

the - 5,382,873
who - 1,687,254
the OR who - 5,411,305

即大多数包含 的文档who也包含the,除了 28 432 个文档,当您检索它们时添加到结果集中。

您可以通过更改默认运算符来更改此行为:

parser.setDefaultOperator(QueryParserBase.AND_OPERATOR)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Apache Lucene进行搜索优化

来自分类Dev

使用 apache lucene 进行词形还原

来自分类Dev

Lucene或使用布尔查询进行搜索

来自分类Dev

Solr 3.6使用Apache Lucene进行排序吗?

来自分类Dev

如何分析使用Apache Lucene 4.0的领域

来自分类Dev

使用 Lucene 7 进行日期范围查询

来自分类Dev

如何使用Apache Lucene 5.3.1仅索引最小长度的单词?

来自分类Dev

在Appengine上使用org.apache.lucene的问题

来自分类Dev

在Appengine上使用org.apache.lucene的问题

来自分类Dev

如何开始使用 Apache Lucene 搜索 bean 属性?

来自分类Dev

使用 apache lucene 索引中的 Field.index

来自分类Dev

使用 apache lucene 去除停用词时出现异常

来自分类Dev

静态网站的Apache Lucene

来自分类Dev

Apache Lucene 版本

来自分类Dev

如何使用Lucene查询界面在值列表中进行搜索

来自分类Dev

使用Lucene查询相关文档字段

来自分类Dev

如何根据lucene搜索结果查询lucene?

来自分类Dev

Apache Lucene TokenStream违反合同

来自分类Dev

Apache Lucene-优化搜索

来自分类Dev

了解Apache Lucene的评分算法

来自分类Dev

使用Apache Lucene删除磁盘中的所有索引数据/文件?

来自分类Dev

尽管使用了StopAnalyzer和StopFilter,但Apache Lucene不会过滤停用词

来自分类Dev

使用一个静态过滤器的基于Hibernate Apache Lucene的全文本搜索

来自分类Dev

如何在Apache Lucene SOLR 6.3.0中获得准确的结果,并以类似的结果开头

来自分类Dev

使用Apache Jena进行地理空间查询

来自分类Dev

如何使Raven DB Lucene查询与结果转换器配合使用

来自分类Dev

使用 Lucene 查询语法的 Azure 搜索返回不正确的结果

来自分类Dev

Lucene.net:使用MultiFieldQueryParser时没有搜索结果

来自分类Dev

如何在Orchard CMS上使用Lucene查询语法

Related 相关文章

  1. 1

    使用Apache Lucene进行搜索优化

  2. 2

    使用 apache lucene 进行词形还原

  3. 3

    Lucene或使用布尔查询进行搜索

  4. 4

    Solr 3.6使用Apache Lucene进行排序吗?

  5. 5

    如何分析使用Apache Lucene 4.0的领域

  6. 6

    使用 Lucene 7 进行日期范围查询

  7. 7

    如何使用Apache Lucene 5.3.1仅索引最小长度的单词?

  8. 8

    在Appengine上使用org.apache.lucene的问题

  9. 9

    在Appengine上使用org.apache.lucene的问题

  10. 10

    如何开始使用 Apache Lucene 搜索 bean 属性?

  11. 11

    使用 apache lucene 索引中的 Field.index

  12. 12

    使用 apache lucene 去除停用词时出现异常

  13. 13

    静态网站的Apache Lucene

  14. 14

    Apache Lucene 版本

  15. 15

    如何使用Lucene查询界面在值列表中进行搜索

  16. 16

    使用Lucene查询相关文档字段

  17. 17

    如何根据lucene搜索结果查询lucene?

  18. 18

    Apache Lucene TokenStream违反合同

  19. 19

    Apache Lucene-优化搜索

  20. 20

    了解Apache Lucene的评分算法

  21. 21

    使用Apache Lucene删除磁盘中的所有索引数据/文件?

  22. 22

    尽管使用了StopAnalyzer和StopFilter,但Apache Lucene不会过滤停用词

  23. 23

    使用一个静态过滤器的基于Hibernate Apache Lucene的全文本搜索

  24. 24

    如何在Apache Lucene SOLR 6.3.0中获得准确的结果,并以类似的结果开头

  25. 25

    使用Apache Jena进行地理空间查询

  26. 26

    如何使Raven DB Lucene查询与结果转换器配合使用

  27. 27

    使用 Lucene 查询语法的 Azure 搜索返回不正确的结果

  28. 28

    Lucene.net:使用MultiFieldQueryParser时没有搜索结果

  29. 29

    如何在Orchard CMS上使用Lucene查询语法

热门标签

归档