使用lucene索引的neo4j分页或如何跳过索引命中

使用lucene索引的neo4j分页或如何跳过索引命中,lucene,indexing,iterator,neo4j,paging,Lucene,Indexing,Iterator,Neo4j,Paging,我有一个neo4j数据库(版本2.0.2),其中包含5M个节点和这些节点的所有属性的索引 当我有一个命中率为1M的索引搜索结果()并且只需要结果:500k-510k时,迭代器从数据库中加载所有节点(0-500k)并跳过它们,这相当慢。。。以下是我目前的做法: final int pageSize=5000; 最终整版=100; 最终索引Index=graphDatabaseService.Index().forNodes(“indexname”); final IndexHits hits=in

我有一个neo4j数据库(版本2.0.2),其中包含5M个节点和这些节点的所有属性的索引

当我有一个命中率为1M的索引搜索结果()并且只需要结果:500k-510k时,迭代器从数据库中加载所有节点(0-500k)并跳过它们,这相当慢。。。以下是我目前的做法:

final int pageSize=5000;
最终整版=100;
最终索引Index=graphDatabaseService.Index().forNodes(“indexname”);
final IndexHits hits=index.query(新的通配符查询(新术语(“属性”、“值*”))));
final PagingIterator PagingIterator=新的PagingIterator(hits.iterator(),pageSize);
pagingIterator.page(第页);
最终Iterable分页Iterable=新Iterable(){
@凌驾
公共迭代器迭代器(){
返回分页迭代器;
}
};
for(最终节点:分页可编辑){
写入(节点);
}

有没有一种方法可以避免资源迭代器从图形数据库加载不必要的节点?

为什么不使用Cypher?您可以使用跳过和限制关键字

START n=node:indexname("property:value*")
RETURN n
SKIP 500000
LIMIT 10000

不知道会有什么表演。

嗨,谢谢你的回答!是的,我已经看到cypher有一个“跳过”命令。cypher也可以解析我的lucene查询,但我正在使用自定义lucene QueryParser为适当的字段提供数字范围查询。。如果有一种方法可以让ExecutionEngine使用我的自定义QueryParser,那么它将是我的解决方案。。。