根據新的索引規則,auto_index
將在未來消失,並且預計將使用cypher
創建索引。按照這種新方法,爲了索引一個節點屬性,你必須提供一個節點標籤。所有節點上的密碼索引公共屬性
我有一個「節點ID」屬性存在於所有類型的節點標籤的 - 用戶,員工,銀行,汽車等我到自動索引中使用該屬性檢索任何類型的節點,如果它的節點ID是已知的。請注意,由於自動索引不需要我提供節點標籤,因此我可以做我所做的。
ReadableIndex<Node> readableIndex = this.graphDatabaseService.index().getNodeAutoIndexer().getAutoIndex();
readableIndex.get("nodeId", "0").getSingle();
但是,對於新的樣式,我必須爲每個節點標籤的nodeId屬性創建索引。所以,我必須這樣做:
create index on :User(nodeId)
create index on :Employee(nodeId)
...
而且,我的方法getByNodeId(String nodeId)
現在是無用的,因爲這個暗號查詢恕我直言,將不能再使用索引,因爲我不傳遞任何節點標籤。
match (node) where node.nodeId = {nodeId} return node;
因爲我getByNodeId()
方法整點是要在所有節點通用的,我不能給這個暗號查詢節點標籤。那麼我應該在這裏做什麼。我的2個問題是:
- 如何通過暗號告訴Neo4j的索引所有節點上的標籤
- 我如何寫一個使用不是基於節點的標籤上,但基於節點的性能指標一個暗號查詢。
注:
對我來說,因爲我使用的Neo4j-JDBC 和使用暗號,他們沒有方法來創建自動索引或訪問 自動索引是很重要(至少不是我所知道的)。
有些人可能會建議我改變neo4j.properties使 自動索引,但我不喜歡更改配置文件。 I 想在我的程序中做到這一點。無論如何,這隻會解決 的第一個問題。第二個問題仍然存在。
謝謝問這個!我正要問完全一樣的東西。 – ADTC 2016-05-12 02:41:40