带有match子句的不区分大小写的cypher查询在neo4j中不起作用

时间:2014-02-19 05:15:06

标签: neo4j cypher neo4jphp

我正在尝试在neo4j 1.9.5中使用不区分大小写的查询以及我的Web应用程序中的建议搜索

start n=node(*) 
MATCH n-[Lives]->m
WHERE m.City_Name='Belgium' and n.First_Name =~ '(?i)p.*' return n

但它会出现以下错误: Ljava.lang.String;无法强制转换为java.lang.String [例外] => ClassCastException

如何解决这个问题? 在neo4j 2.0中有可能吗? 他们做这种东西的选择/模式是什么? 谢谢。

2 个答案:

答案 0 :(得分:0)

您的两个属性之一是数组而不是字符串。

此外,您可能希望从索引中查找城市。

在Neo4j 2.0中

create index on :City(City_Name);

MATCH n-[Lives]->(m:City)
WHERE m.City_Name='Belgium' and n.First_Name =~ '(?i)p.*' return n

在Neo4j 1.9中使用node_auto_index

neo4j.properties中配置自动索引,并将City_Name添加到索引字段列表中。 然后使用:

START m=node:node_auto_index(City_Name="Belgium")
MATCH n-[Lives]->(m)
WHERE n.First_Name =~ '(?i)p.*'
RETURN n

答案 1 :(得分:0)

你可以做区分大小写的

match (m:person) where m.username=~'.*amruta_rao@gmail.com.*' and m.is_active=True return m

并且对

不敏感
match (m:person) where m.username=~'(?i).*amrutA_rao@gmail.com.*' and m.is_active=True return m