具有startswith结构的索引性能

时间:2014-12-25 10:30:31

标签: indexing neo4j cypher

neo4j中是否没有像startswith那样在索引属性上快速运行的表达式?

我目前正在运行像

这样的查询
match (p:Page) where p.Url =~ 'http://www.([\\w.?=#/&]*)' return p

p.Url属性已编制​​索引,但上面的查询非常慢。特别是从索引搜索开始应该是否相当快?

1 个答案:

答案 0 :(得分:0)

目前,架构索引不支持regex(或'startsWith')过滤器。您的cypher语句将扫描具有Page标签的所有节点,并根据其属性对其进行过滤。

Neo4j的下一个版本中预计会有更复杂的模式索引查询功能。

如果你现在需要这个功能,你基本上有两个选择:

  1. 使用reference manual
  2. 中记录的旧索引
  3. 如果您的查询始终过滤以protocoll://prefix开头,您可以将前缀protocoll://prefix放入其他属性urlPrefix并在其上声明索引(create index on :Page(urlPrefix)然后,您的查询为match (p:Page) where p.urlPrefix='http://www.' return p,并将通过现有索引运行。