我使用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