Я моделирую граф перехода поискового термина в программном обеспечении электронной коммерции как граф узлов (терминов) и ребер (переходов).Если пользователь вводит, например, iphone
в строке поиска, а затем уточняет запрос до iphone 6s
, это будет смоделировано как два узла и ребро между этими узлами.Один и тот же переход членов разных пользователей приведет к нескольким ребрам между узлами.
![enter image description here](https://i.stack.imgur.com/1pSHw.png)
Теперь я хотел бы создать ребро с суммарным весом 4, чтобы показать, что 4 пользователя сделали этот конкретный переход.Как объединить результаты запроса count(*)
с запросом на создание, чтобы получить ребро со свойством weight = 4
Мой count(*)
запрос:
MATCH (n:Term)-[r]->(n1:Term)
RETURN type(r), count(*)
I 'Можно ожидать, что комбинированный запрос будет выглядеть следующим образом, но такого рода sql-подобная композиция, по-видимому, невозможна в cypher
:
MATCH (n:Term), (n1:Term)
WHERE (n)-[tr:TRANSITION]->(n1)
CREATE (n)-[actr:ACC_TRANSITION {count:
MATCH (n:Term)-[r]->(n1:Term) RETURN
count(*)}
]->(n1)
RETURN n, n1
Неуниверсальный запрос для создания накопленного перехода, который работает:1022 *
MATCH (n:Term), (n1:Term)
WHERE n.term = 'iphone' AND n1.term ='iphone 6s'
CREATE (n)-[actr:ACC_TRANSITION {count: 4}]->(n1)
RETURN n, n1
Любые другие идеи о том, как подходить и моделировать эту проблему?