当前位置: 首页 > 知识库问答 >
问题:

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

羊舌阎宝
2023-03-14

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

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

我认为索引在这种情况下不能有效地工作,因为我小写了字符串。

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

共有1个答案

姜楷
2023-03-14

如果不需要将名称存储在原始大小写中,则在将其存储在数据库中之前,将名称转换为小写。

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

第三种选择是使用遗留索引,它使用起来更加复杂,不再受欢迎。但是,它确实支持不区分大小写的索引(请参见本页的第二个示例)。

 类似资料:
  • 我正在使用: neo4j 2.0。1 我有一个具有属性名称的节点人员,我想用Lucene语法搜索该属性。我在我的存储库中使用findByNamelike方法,它非常适合像value*或*value或*etc这样的查询。 但是我需要这样的查询{A*TO D*}。我发现了一个弃用的方法findAllByQuery(名称,查询),用这个方法我可以实现我的需求。 > 我还注意到,如果我从cypher创建节

  • 我正在实验/学习Spring数据neo4j。我有一个非常简单的应用程序,可以存储来自推特的推文。请参阅下面的片段。 问题是,存储哈希标签的最佳方式是什么,这样我就可以快速获取它们所属的推文?我能想到的是要么在Set上使用@索引,要么实际上创建一个单独的标签NodeEntity,并在它和推文之间建立关系。我找不到在NodeEntity中索引集合的任何留档,所以我不确定是否在set对象上创建了索引,或

  • 我正在使用数据库和。现在,我想导入相当大的数据集,因此我研究了的批插入功能。 经过我的研究,我发现: 用于嵌入式数据库:http://docs.neo4j.org/chunked/stable/batchinsert.html以及使用它的Michael Hunger项目:https://github.com/jexp/batch-import/ REST批处理终结点:http://docs.neo

  • 使用lucene_native-2.0的neo4j3.4无法为属性创建约束。显然是因为唱片太长了 <代码>原因:java。io。IOException:java。lang.IllegalArgumentException:支持的最大密钥大小为4095,但尝试存储大小为4239 | GB树的密钥[文件:/var/lib/neo4j/data/databases/graph.db/schema/ind

  • 我找到了关于如何计算neo4j数据库大小的以下信息:https://neo4j.com/developer/guide-sizing-and-hardware-calculator/#_disk_storage

  • 今天我尝试了Spring Data Neo4j,我终于让它工作了... 我正在使用: Spring 4.0。2 Spring数据Neo4j 3.0。0 QueryDSL 3.3。1 Neo4j 2.0。一, 这是我的配置: 我的域名类: 和我的仓库: 我可以在DB中成功创建一个用户,然后通过以下方式检索该用户: 但是:如果我现在再次调用我的create代码,它不会抛出异常,因为,它只会覆盖数据库中