Neo4j搜索未知数量的属性

时间:2014-03-20 12:16:13

标签: list neo4j cypher

我有这样的图表:

(A) - [R 1] - (B) - [R 2] - (C)

问题是,r1和r2可以具有不同数量的属性。

relation1:
   index1: 10
   index2: 2

relation2:
   index1: 6
   index2: 4
   index3: 5

是否可以在不知道名字的情况下搜索所有房产?或者有没有更好的方法来保持neo4j中的列表?

2 个答案:

答案 0 :(得分:2)

属性值可以是列表,只要所有元素都是相同类型即可。所以你可以拥有

match (A) -[r1]-> (B) -[r2]-> (C) set r1.vals = [10, 6], r2.vals=[6, 4, 5]

以后再搜索

match (A) -[r]-> (B) where 10 in r.vals return a,b

我不知道这是否适用于索引,因此可能是tstorms'如果你有很多这样的关系,答案会更好。

答案 1 :(得分:1)

在“原生”密码中无法执行此操作,但您可以使用使用Lucene的automatic relationship indexing。我想你可以在Cypher中做到以下几点:

START r=rel:rel_auto_index("*:'your_search_value'")
RETURN startNode(r), endNode(r), type(r);

确保在Neo4j属性中启用自动索引:

relationship_auto_indexing = true