Lucene的.NET结果子集(Lucene .NET result subsets)

2019-09-22 11:00发布

我使用Lucene .NET比方说,我想只返回50个结果开始的结果是100,我会如何呢? 我搜索的文档,但我没有找到任何东西。 是否有什么我失踪?

Answer 1:

我假设你是为寻呼的目的这样做。 这通常在Lucene的执行(包括SOLR)是做的方式是通过简单地执行查询正常,但实际上只装你有兴趣在结果中存储的数据。

在一个典型的寻呼情况下,这可能意味着多次,这似乎是一种资源的浪费执行相同的查询,但是从系统缓存的帮助,可能Lucene的缓存它不是那么糟糕。 好处是无状态,它允许你扩展。



Answer 2:

您的代码应该是这个样子:

TopDocs topDocs = indexSearcher.Search(query, null, 150);
for(int i=100, i<min(topDocs.totalHits,150); i++) {
    Document doc = indexSearcher.doc(topDocs.scoreDocs[i]);

    // Do something with the doc
}

不要使用Hits类。 这是低效和过时。



文章来源: Lucene .NET result subsets