我有一个正在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);
答案 0 :(得分:0)
仅=~
不能正常工作,您需要像这样为字符串加上(?i)
前缀:
WHERE n.lastname =~ '(?i)' + {0}
请注意,执行此类查询时无法使用索引,因此计划人员需要对所有:Patient节点进行标签扫描,随着:Patient节点的增加,其性能会降低。
如果您使用的是Neo4j 3.5.x,则可能要考虑使用fulltext schema indexes,它可以覆盖节点的多个属性(而不是单个属性),这对于您的情况而言是完美的,并且不区分大小写。不过,您可能需要弄清楚在哪里进行分数截止,以便仅获得相关结果。