Neo4j索引全文搜索

时间:2014-11-14 13:20:20

标签: indexing neo4j full-text-search spring-data-neo4j

我正在研究neo4j数据库版本2.0。我有以下要求:

案例1.我想获取名称中包含某些字符串的所有记录,例如,如果我正在搜索Neo4j,则应返回所有名称 Neo4j数据,Neo4j数据库,Neo4jDatabase等的记录

案例2.当我想激发无字段查询时,如果属性集具有匹配值,则应返回这些记录,或者它也可以是全局级别而不是标签级别。< / p>

区分大小写也是一个观点。

我已经读过很多关于喜欢,索引,全文搜索,遗留索引等等的事情。,所以最适合我的情况,或者我必须使用弹性搜索等。

我在我的应用程序中使用 spring-data-neo4j ,因此为SDN提供一些配置

2 个答案:

答案 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/