试图使我的Cypher语句不区分大小写

时间:2019-10-31 14:38:26

标签: neo4j cypher

我有一个正在Neo4j存储库上工作的密码查询,我想使该查询不区分大小写。

尝试过=~,但这不起作用。

@Query (countQuery = "match (n:Patient) where n.born = {0} OR n.lastName = {0} OR n.email = {0} return n") Page<Patient> findByLastNameOrBornOrEmail(String lastName, String born, String email, Pageable pageable);

1 个答案:

答案 0 :(得分:0)

=~不能正常工作,您需要像这样为字符串加上(?i)前缀:

WHERE n.lastname =~ '(?i)' + {0}

请注意,执行此类查询时无法使用索引,因此计划人员需要对所有:Patient节点进行标签扫描,随着:Patient节点的增加,其性能会降低。

如果您使用的是Neo4j 3.5.x,则可能要考虑使用fulltext schema indexes,它可以覆盖节点的多个属性(而不是单个属性),这对于您的情况而言是完美的,并且不区分大小写。不过,您可能需要弄清楚在哪里进行分数截止,以便仅获得相关结果。