【发布时间】:2008-12-08 22:29:29
【问题描述】:
我正在使用 Lucene 在 Web 应用程序中显示搜索结果。我也在自定义分页以显示相同的结果。 搜索结果可能从 5000 到 10000 或更多。 有人可以告诉我分页和缓存搜索结果的最佳策略吗?
【问题讨论】:
-
这个用户好像在重复重复相同或相似的问题:stackoverflow.com/users/41625/…看发帖记录再花时间回答...
标签: lucene
我正在使用 Lucene 在 Web 应用程序中显示搜索结果。我也在自定义分页以显示相同的结果。 搜索结果可能从 5000 到 10000 或更多。 有人可以告诉我分页和缓存搜索结果的最佳策略吗?
【问题讨论】:
标签: lucene
我建议您不要缓存结果,至少不要在应用程序级别。不过,在具有大量内存(操作系统可用于其文件缓存)的机器上运行 Lucene 会有所帮助。
只需为每个页面使用不同的偏移量重复搜索即可。缓存引入了状态性,最终会破坏性能。我们有数百名并发用户搜索超过 4000 万份文档的索引。在不使用显式缓存的情况下,搜索在不到一秒的时间内完成。
使用从搜索返回的Hits 对象,您可以像这样访问页面的文档:
Hits hits = searcher.search(query);
int offset = page * recordsPerPage;
int count = Math.min(hits.length() - offset, recordsPerPage);
for (int i = 0; i < count; ++i) {
Document doc = hits.doc(offset + i);
...
}
【讨论】:
Searcher 上也有 search(Query, Sort) 过载。
Searchable 界面。我指的是org.apache.lucene.search.Searcher 类中声明的方法。