我运行了一个密码查询,从我的图表中删除所有具有相同名称的重复关系。关系具有属性(名称,置信度,时间)。我使用以下查询保持关系具有最高置信度值并收集所有时间值:
MATCH (e0:Entity)-[r:REL]-(e1:Entity)
WITH e0, r.name AS relation, COLLECT(r) AS rels, COLLECT(r.confidence)AS relConf, MAX(r.confidence) AS maxConfidence, COLLECT(r.time) AS relTime, e1 WHERE SIZE(rels) > 1
SET (rels[0]).confidence = maxConfidence, (rels[0]).time = relTime
FOREACH (rel in tail(rels) | DELETE rel)
RETURN rels, relation, relConf, maxConfidence, relTime
旧数据:
name,confidence,time
likes, 0.87, 20111201010900
likes, 0.97, 20111201010600
新数据:
name,confidence,time
likes, 0.97, [20111201010900,20111201010600]
有人可以建议一个匹配查询来查找新的“时间”属性中包含2011年的关系吗? (我从csv加载时使用toInt转换时间)。
答案 0 :(得分:3)
您的新数据结构绝对不容易进行此类搜索,但可以在中等图表上进行:
MATCH (n:Entity)-[r:REL]->(x)
WHERE ANY(
t IN extract(x IN r.time | toString(x))
WHERE t STARTS WITH "2011"
)
RETURN r