Neo4j,在返回可分页结果的同时查询多个 lucene 索引

Posted

技术标签:

【中文标题】Neo4j,在返回可分页结果的同时查询多个 lucene 索引【英文标题】:Neo4j, querying multiple lucene indexes while returning a pageable result 【发布时间】:2015-10-16 15:22:36 【问题描述】:

我一直在尝试编写一个密码查询,它使我能够从多个 lucene 索引中获取结果,同时启用可分页的结果。

据我所知:

START u=node:Index1(lucene_expression1) 
RETURN COLLECT(u) as clt 
START u=node:Index2(lucene_expression2) 
RETURN clt + COLLECT(u) as clt
UNWIND clt AS u 
WITH DISTINCT u 
RETURN u ORDER BY u.name SKIP 0 LIMIT 10

问题是当第二个索引没有返回任何结果时, 不返回任何结果,忽略第一个索引返回的结果。

我认为这是因为执行顺序,除非 COLLECT 或 COUNT 是唯一返回的字段,否则空结果集总是返回空结果集。

澄清一下,我知道我可以使用 UNION 来获取完整的数据集,但是我需要在 Neo4j 之外应用分页,我希望避免这种情况。

谢谢

【问题讨论】:

【参考方案1】:

为我工作:

START n=node:node_auto_index(name="Neo2")
WITH collect(n) AS c
START n=node:node_auto_index("name:Neo")
WITH c + collect(n) AS c2 UNWIND c2 AS n
RETURN n
SKIP 0 LIMIT 10

见:http://console.neo4j.org/r/wrokab

【讨论】:

第二个查询没有返回任何结果的时候试试console.neo4j.org/r/31fr9c

以上是关于Neo4j,在返回可分页结果的同时查询多个 lucene 索引的主要内容,如果未能解决你的问题,请参考以下文章

如何使 saveAll 结果返回可分页?

可分页 - 按多个表中的值排序

Neo4j:返回并行查询结果

SQL Server存储过程同时返回分页结果集和总数

在扩展 CrudRepository 的接口中缓存可分页对象(结果)

NEO4J Optional Match when null, 整个查询返回为空