我有一个具有属性名称的Node Person,我想在该属性上使用Lucene语法进行搜索。我在我的存储库中使用了findByNameLike方法,它非常适合查询,例如value *或* value或* etc.
但我需要一个类似{A * TO D *}的查询。我找到了一个弃用的方法findAllByQuery(“name”,query),用这种方法我可以满足我的需求。
我想知道理解这种查询语法的新方法是什么不被弃用。
我还注意到,如果我从cypher创建节点,则该节点在我的搜索中不可用。 使用SDN我认为生成的节点也会自动添加到索引中,但我不知道如何检查它以及索引名称是什么。我必须从cypher生成节点,以便在我的所有系统中都有一些基础数据。我应该在我的密码查询中添加一些特殊属性吗?
答案 0 :(得分:0)
首先,请务必了解legacy (deprecated) Lucene indexes与较新Schema indexes之间的差异。
我想知道什么是未被弃用的新方法 这样的查询语法。
为方便起见,您必须使用SchemaIndexRepositry
界面中扩展的GraphRepository
方法之一。请记住,例如尚未在架构索引上实现通配符搜索。如果您想使用通配符搜索,您将有2个选项。继续使用Lucene索引(目前最好的选项),或在自定义存储库方法中使用正则表达式查询。 E.g。
MATCH (p:Person) WHERE p.name =~ ".*test.*" RETURN p
我还注意到,如果我从cypher创建节点,则节点不是 在我的搜索中可用。使用SDN我认为生成的节点会 也自动添加到索引,但我不知道如何检查 那是什么是索引名称。我必须从cypher生成节点 在我的所有系统中都有一些基础数据。我应该添加一些特别的 我的密码查询中的属性?
如果您正在使用Lucene索引,则不会将新条目添加到索引中。 AFAIK,你只能以编程方式。可以按如下方式创建模式索引:
CREATE INDEX ON :Person(name)
具有name属性的新条目将自动添加到索引中。同样,通配符搜索还不会使用这些索引。