Neo4j/Spring 数据 Neo4j 4 索引和字符大小写

Neo4j/Spring Data Neo4j 4 index and case of characters

我有以下 SDN 4 节点实体:

@NodeEntity
public class Product {

    @Index(unique = false)
    private String name;

...

}

我在这个实体中添加了 name 属性 并声明了一个索引。

现在我将按产品名称实施不区分大小写的搜索。

我已经创建了一个 SDN 4 存储库方法:

@Query("MATCH (p:Product) WHERE LOWER(d.name) = LOWER({name}) RETURN p")
Product findByName(@Param("name") String name);

为了搜索我使用以下 Cypher 的产品:LOWER(d.name) = LOWER({name})

我认为索引在这种情况下不起作用,因为我将字符串小写了。

Neo4j/SDN4 中使索引在这里工作的正确方法是什么?

如果不需要将名称以原始大小写存储,则将名称转换为小写后再存储到数据库中。

如果您确实需要原始大小写的名称,那么您可以添加一个额外的 属性(例如,"lower_name")来存储小写的名称。您可以索引 属性 并将其用于索引比较。

第三种选择是使用 legacy indexing, which is much more complex to use and no longer favored. However, it does support case-insensitive indexing (see the second example on this page).