neo4j中是否没有像startswith那样在索引属性上快速运行的表达式?
我目前正在运行像
这样的查询match (p:Page) where p.Url =~ 'http://www.([\\w.?=#/&]*)' return p
p.Url属性已编制索引,但上面的查询非常慢。特别是从索引搜索开始应该是否相当快?
答案 0 :(得分:0)
目前,架构索引不支持regex(或'startsWith')过滤器。您的cypher语句将扫描具有Page
标签的所有节点,并根据其属性对其进行过滤。
Neo4j的下一个版本中预计会有更复杂的模式索引查询功能。
如果你现在需要这个功能,你基本上有两个选择:
protocoll://prefix
开头,您可以将前缀protocoll://prefix
放入其他属性urlPrefix
并在其上声明索引(create index on :Page(urlPrefix)
然后,您的查询为match (p:Page) where p.urlPrefix='http://www.' return p
,并将通过现有索引运行。