我有一个关系,它有一个ids s_ids列表作为关系的属性。列表中的每个id对应于另一个节点,该节点的句子对应于id.I使用:
MATCH (c: term)-[r: semrel]->(t: term), (b: Sentence)
Where r.source = "xyz" And b.sentence_id IN r.s_id
return r,b
返回对应关系的所有句子, 结果如下:
r b
w abc
w rty
w zxv
e nmx
e qrt
对每个句子重复关系r我如何将对应于每个关系的句子列表分组以获得
r b
w abc, rty, zxv
e nmx,qrt
由于
答案 0 :(得分:1)
这应该返回每个r
及其句子集合:
MATCH (c: term)-[r: semrel]->(t: term), (b: Sentence)
WHERE r.source = "xyz" AND b.sentence_id IN r.s_i
RETURN r, COLLECT(b) AS sentences;
为了获得更好的性能,如果你创建一个索引:Sentence(sentence_id),就像这样:
CREATE INDEX ON :Sentence(sentence_id);
然后这个查询(添加一个使用索引的提示)应该更快(因为可以使用索引找到b
个节点):
MATCH (c: term)-[r: semrel]->(t: term), (b: Sentence)
USING INDEX b:Sentence(sentence_id)
WHERE r.source = "xyz" AND b.sentence_id IN r.s_i
RETURN r, COLLECT(b) AS sentences;