Indexing 我应该如何在我的案例中使用索引或密码?

Indexing 我应该如何在我的案例中使用索引或密码?,indexing,neo4j,Indexing,Neo4j,我是neo4j的新手。我真的需要你的帮助。我的情况是: 在一个城市中,有数十万家酒店,我使用带有标签“Hotel”的节点来表示它。每个酒店都有酒店名称、酒店地址、酒店电话 还有数百万人。我使用带有标签“Person”的节点来表示Person,每个Person都有属性Person\u name、Person\u identity、Person\u age 当一个人签入酒店时,我创建了一个从个人节点到酒店节点的关系,该关系具有格式为“20130820134000”(YYYYMMDDHHMIS)的属性

我是neo4j的新手。我真的需要你的帮助。我的情况是:

在一个城市中,有数十万家酒店,我使用带有标签“Hotel”的节点来表示它。每个酒店都有酒店名称、酒店地址、酒店电话

还有数百万人。我使用带有标签“Person”的节点来表示Person,每个Person都有属性Person\u name、Person\u identity、Person\u age

当一个人签入酒店时,我创建了一个从个人节点到酒店节点的关系,该关系具有格式为“20130820134000”(YYYYMMDDHHMIS)的属性in_time

我已启用自动索引:

带有属性键的节点自动索引:酒店名称、人员名称、人员标识

自动索引与属性键的关系:in\u time

在我的neo4j数据库中有上千万的关系

现在我想问一下,在时间点“201309108000”和“201309110800000”之间入住酒店的人有哪些,这两个时间点的限制年龄均为20岁

我的密码如下:

start r = relationship:relationship_auto_index('in_time:[20130910080000 TO 20130911080000]')
match (p:Person)-[r]-(h:Hotel)
where p.person_age=20
return p,r,h

但是上面这个密码运行得很慢,我该怎么办?如有任何帮助,我们将不胜感激。

此条款如下:

relationship:relationship_auto_index('in_time:[20130910080000 TO 20130911080000]')
使用lucene索引(范围位为lucene查询语法)。我在这里不是100%确定,但我想知道这会使查询具有多大的选择性-有可能索引检查会在每个关系上运行,而不仅仅是匹配您路径的关系

因此,您可能希望尝试以下查询:

match (p:Person)-[r]-(h:Hotel)
where p.person_age=20 AND
      r.in_time >= 20130910080000 AND
      r.in_time <= 20130911080000
return p,r,h
match(p:Person)-[r](h:Hotel)
其中p.person_age=20和
r、 in_time>=2013091008000和
r、 在\u time中尝试此查询:

start r = relationship:relationship_auto_index('in_time:[20130910080000 TO 20130911080000]')
WITH  startNode(r) as p, endNode(r) as h, r
WHERE p:Person and h:Hotel and p.person_age=20
return p,r,h

我试过你演示的密码。但是它仍然很慢(用了54712毫秒)。你预计什么时候?此查询比您的备选方案快还是慢?不到一分钟的执行时间超过数百万个节点和关系对我来说并不坏。你应该谷歌NeN4J性能调整,并考虑这些选项,但不清楚什么是可以接受的。谢谢你,米迦勒,这是有效的。(耗时1560毫秒)有没有可能使速度更快?我的意思是同时使用关系索引和节点索引。