当前位置:  开发笔记 > 编程语言 > 正文

分页Lucene的搜索结果

如何解决《分页Lucene的搜索结果》经验,为你挑选了1个好方法。

我正在使用Lucene在Web应用程序中显示搜索结果.我也是自定义分页以显示相同的内容.搜索结果可能在5000到10000或更多之间.有人可以告诉我分页和缓存搜索结果的最佳策略吗?



1> erickson..:

我建议你不要缓存结果,至少不要在应用程序级别.在具有大量内存的盒子上运行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);
  ...
}

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有