我正在研究neo4j数据库版本2.0。我有以下要求:
案例1.我想获取名称中包含某些字符串的所有记录,例如,如果我正在搜索Neo4j,则应返回所有名称 Neo4j数据,Neo4j数据库,Neo4jDatabase等的记录
案例2.当我想激发无字段查询时,如果属性集具有匹配值,则应返回这些记录,或者它也可以是全局级别而不是标签级别。< / p>
区分大小写也是一个观点。
我已经读过很多关于喜欢,索引,全文搜索,遗留索引等等的事情。,所以最适合我的情况,或者我必须使用弹性搜索等。
我在我的应用程序中使用 spring-data-neo4j ,因此为SDN提供一些配置
答案 0 :(得分:3)
使用@Indexed注释
注释名称@Indexed(indexName = "whateverIndexName", indexType = IndexType.FULLTEXT)
private String name;
然后按照以下方式查询它(SDN存储库中的方法示例,您可以使用类似于您使用cypher的其他任何地方):
@Query("START n=node:whateverIndexName({query}) return n"
Set<Topic> findByName(@Param("query") String query);
Neo4j使用lucene作为后端进行索引,因此查询值必须是有效的lucene查询,例如&#34;名称:Neo4j的&#34;或者&#34;名称:neo4j *&#34;。
有一篇文章解释了各种Neo4j索引http://nigelsmall.com/neo4j/index-confusion的混淆。
答案 1 :(得分:1)
我认为您不需要使用弹性搜索 - 您可以使用旧索引或lucene索引进行全文搜索。
查看Michael Hunger的博客:jexp.de/blog
thix post具体来说:http://jexp.de/blog/2014/03/full-text-indexing-fts-in-neo4j-2-0/