【发布时间】:2015-05-08 02:13:25
【问题描述】:
我想使用 Lucene 处理几百万条新闻数据。我对 Lucene 很陌生,所以我正在尝试越来越多地了解它是如何工作的。
通过网络上的几个教程,我发现 TopScoreDocCollector 类与查询 Lucene 索引具有高度相关性。
你可以这样创建它
int hitsPerPage = 10000;
TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage, true);
它稍后会收集您的查询结果(仅收集您在 hitsPerPage 中定义的数量)。我最初认为获取的结果只是随机分布的或其他东西(比如你有 100.000 个与您的查询匹配的文档,只是随机得到 10.000 个)。我现在想我错了。
在阅读了更多关于 Lucene 的内容后,我来到了该课程的 javadoc(请参阅here)。这里说
收集得分最高的命中的收集器实现, 将它们作为 TopDocs 返回
所以对我来说,现在看来 Lucene 正在使用一些非常智能的技术来以某种方式返回我输入查询的得分最高的文档。但是那个得分手是如何工作的呢?他会考虑什么?我已经扩展了对该主题的研究,但到目前为止找不到我完全理解的答案。
您能否解释一下 TopcScoreDocCollector 中的 Scorer 如何对我的新闻文档进行评分,以及这是否对我有用?
【问题讨论】:
-
lucene 的默认分数基于 tf.idf : (lucene.apache.org/core/4_0_0/core/org/apache/lucene/search/…)
标签: java sorting indexing lucene scoring