2014-11-14 140 views
1

我對Neo4j的數據庫版本2.0.I的工作人員有下列要求:Neo4j的索引全文搜索

案例1.我想取其中名稱中包含一些字符串,例如,如果我在尋找Neo4j的所有記錄那麼應該返回所有具有名稱的記錄 Neo4j Data,Neo4j數據庫,Neo4jDatabase等。情況2:當我想引發無字段查詢時,如果屬性集合具有匹配值,那麼應該返回這些記錄,或者它也可能是全局級別而不是標籤級別。

區分大小寫也是一個觀點。

我已閱讀多個件事一樣,索引,全文搜索,傳統指數等,所以這將是對我的情況下,最適合的,或者我必須使用彈性搜索

我使用彈簧數據的Neo4j在我的應用程序,所以提供了SDN

回答

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查詢,例如「name:neo4j」或「name:neo4j *」。

有一篇文章解釋了各種Neo4j索引http://nigelsmall.com/neo4j/index-confusion的混淆。

+0

如何使用暗號 – 2015-10-22 11:18:58

+0

你不能寫傳統指標的CYPHER註釋。唯一的方法是設置自動索引。見http://jexp.de/blog/2014/03/full-text-indexing-fts-in-neo4j-2-0/ – 2015-10-22 13:10:21