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).
我有以下 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).