返回信息流lz想在web工程中展示lucene分页查找的数据,所以需要将大量的数据按每页50条这样来显示,请问有没有一个不是在查询后在进行分页的方案,lz目前了解的都是先进行查询然后进行分页的策略 例如这个:
IndexReader indexReader = new IndexReader(directory);
Searcher searcher = new IndexSearcher(indexReader);
TopDocs results = searcher.Search("Your Query", null, skipRecords + takeRecords);
ScoreDoc[] scoreDocs = results.scoreDocs;
for (int i = skipRecords; i < results.totalHits; i++)
{
if (i > (skipRecords + takeRecords) - 1)
{
break;
}
luceneDocuments.Add(searcher.Doc(scoreDocs[i].doc));
}
以上方案lz的理解是第一个search的时候就将全部数据加载进内存了,如果数据量很大的话,肯定会出现内存泄露的问题吧,不知道lz理解的对不对,请大神解答 万分感谢[ema1]
这是一条镜像帖。来源:北邮人论坛 / java / #51084同步于 2016/6/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
lucene 分页问题
MrSky
2016/6/18镜像同步26 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 ml3615556 的大作中提到: 】
: 不叫内存泄漏。这叫爆炸~
: sql查询的时候就应该指定范围
对对 应该叫爆炸啦,请问该怎么指定范围呢,详细说一下呗
不了解这个框架。。我猜Apache出的框架肯定有解决方案,比如先建立索引之类的
【 在 MrSky 的大作中提到: 】
: 对对 应该叫爆炸啦,请问该怎么指定范围呢,详细说一下呗
不整体查询的话,那如果我想查询最后一页的数据,怎么实现呢,我了解的lucene有一个分页函数searhAfter(scoreDoc,query,pageSize),第一个参数表示上一次查询的最后一个索引文档,lz的理解是这个函数只能按页码增序查询,查过第一页,记录第一页最后一个索引文档作为下次以查询的条件,接着第二页,依次类推,那如果我上一次查询第N页,下一次要查询N-1页,好像就不能实现了,好纠结这个分页[ema16]
【 在 dmlaomao 的大作中提到: 】
: 不整体查询,每次crud之后异步更新分页?