【问题标题】:Lucene .NET result subsetsLucene .NET 结果子集
【发布时间】:2009-08-07 00:51:08
【问题描述】:

我正在使用 Lucene .NET 假设我只想从结果 100 开始返回 50 个结果,我该怎么做呢? 我已经搜索了文档,但没有找到任何东西。我有什么遗漏吗?

【问题讨论】:

  • 搜索查询在索引字段上要快得多,因为内容被标记化、索引和缓存以进行有效检索。所以不影响性能。但是,当您获取其他文档详细信息时,即扩展字段 - 非索引字段,如描述、标签或类别等,它会导致性能下降。因此,只需阅读当前分页结果的详细信息。 davidsekar.com/c-sharp/indexing-site-contents-using-lucene-net

标签: lucene lucene.net


【解决方案1】:

您的代码应如下所示:

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 类。它效率低下且已弃用。

【讨论】:

    【解决方案2】:

    我假设您这样做是为了分页。这通常在 Lucene 实现(包括 Solr)中完成的方式是简单地正常执行查询,但只实际加载存储的数据以获得您感兴趣的结果。

    在典型的分页场景中,这可能意味着多次执行相同的查询,这似乎是一种资源浪费,但在系统缓存和可能的 Lucene 缓存的帮助下,它并没有那么糟糕。好处是无国籍,这使您可以扩展。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-26
      • 2012-09-29
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 2010-09-17
      • 1970-01-01
      相关资源
      最近更新 更多