Java neo4j慢速lucene索引查询

Java neo4j慢速lucene索引查询,java,neo4j,cypher,Java,Neo4j,Cypher,我正在从neo4j数据库中的索引检索数据,执行时间有一些问题。我正在尝试一个查询,其中我只计算结果值。在我的生产数据库中,我正在进行更复杂的计算。不管怎样,我的问题是这样的 START person = node:user_index('muncipalityCode:(1278 OR 1285 OR 1283 OR 1293 OR 1284 OR 1261 OR 1282 OR 1262 OR 1281 OR 1280 OR 1273) ') return count(person) 该计数

我正在从neo4j数据库中的索引检索数据,执行时间有一些问题。我正在尝试一个查询,其中我只计算结果值。在我的生产数据库中,我正在进行更复杂的计算。不管怎样,我的问题是这样的

START person = node:user_index('muncipalityCode:(1278 OR 1285 OR 1283 OR 1293 OR 1284 OR 1261 OR 1282 OR 1262 OR 1281 OR 1280 OR 1273) ')
return count(person)
该计数在大约20秒内返回278418(当缓存处于热态时,返回时间为2.5-3秒)。当然,我返回了一个相当大的数据集。然而,它并不是巨大的

是否有什么地方可以减少这个瓶颈或我应该研究的一些配置设置?我曾尝试在启动时预热缓存,但我无法将所有数据放入生产服务器的ram中,因此结果适得其反(我的服务器有16GB的ram)

我的数据库具有以下属性。 10329245节点 97923564物业
50697532关系

我将使用它来验证问题是在索引中还是在代码的其他地方。如果相应的Luke查询速度很快,那么问题可能出在其他地方。

您能将这段代码翻译成Java API并计时,看看它是索引还是计数吗?我认为or条件可能是个问题(至少在sql中,当有许多or条件时,有时会使用索引)。如果您将查询划分为以下单独的开始阶段,是否有帮助
START person1=node:user\u index('muncipalityCode:1278),person2=node:user\u index('muncipalityCode:1285),person3=。。。。返回计数(person1)+计数(person2)+计数(person3).
返回了多少人?你能将zipcodes建模为索引节点,并将人们连接到这些节点上吗?然后lucene查询只需返回15个条目。Lucene还保留其结果,因此它可能还与内存使用和GC有关。@MichaelHunger您认为将zipcodes建模为节点比使用Lucene索引更快吗?zipcodes每个都有10到100k个关系。从我所看到的情况来看,从单个节点获取大量关系会大大降低cypher查询的速度(尽管我肯定我可能错了=)。实际上,cypher查询的匹配部分非常快。您只想避免使用where子句。所以索引邮政编码,像现在一样在开始时加载所需的邮政编码,除了加载zipcodes而不是person,然后匹配person-[:muncipity_code]->zipcode返回计数(person),看看这是否更快,但我相信会更快。