Lucene.NET结果子集

Lucene.NET结果子集,lucene,lucene.net,Lucene,Lucene.net,我正在使用Lucene.NET 假设我只想从结果100开始返回50个结果,我该怎么做呢? 我查过文件,但什么也没找到。有什么我遗漏的吗?我想您这样做是为了分页。在Lucene实现(包括Solr)中通常是通过正常执行查询来完成的,但实际上只是加载您感兴趣的结果的存储数据 在一个典型的分页场景中,这可能意味着多次执行同一查询,这似乎是在浪费资源,但在系统缓存和Lucene缓存的帮助下,情况并没有那么糟。好处是无状态性,它允许您进行扩展。您的代码应该如下所示: TopDocs topDocs = in

我正在使用Lucene.NET 假设我只想从结果100开始返回50个结果,我该怎么做呢?
我查过文件,但什么也没找到。有什么我遗漏的吗?

我想您这样做是为了分页。在Lucene实现(包括Solr)中通常是通过正常执行查询来完成的,但实际上只是加载您感兴趣的结果的存储数据


在一个典型的分页场景中,这可能意味着多次执行同一查询,这似乎是在浪费资源,但在系统缓存和Lucene缓存的帮助下,情况并没有那么糟。好处是无状态性,它允许您进行扩展。

您的代码应该如下所示:

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
}
TopDocs TopDocs=indexSearcher.Search(查询,空,150);

对于(int i=100,iSearch查询在索引字段上的速度要快得多,因为内容被标记、索引和缓存以实现高效检索。因此,它不会影响性能。但是,当您获取额外的文档详细信息时,即扩展字段-非索引字段,如描述、标记或类别等,会导致性能下降。因此请阅读当前分页结果的详细信息。