У меня есть набор данных, который выглядит так (артефакт)-[HAS]-(ключевое слово), ключевые слова могут использоваться артефактами несколько раз. Чего я пытаюсь достичь, так это;
Возврат наиболее взаимосвязанных узлов ключевых слов, количество артефактов, связанных с ключевыми словами, количество перекрытий между узлами ключевых слов и переходов к другому ключевому слову (ключевое слово) — (артефакт) — (ключевые слова), количество «общих» артефактов между двумя ключевыми словами.
Другими словами, количество записей артефактов на пересечении между двумя узлами ключевых слов. Например, учитывая эти три узла артефакта
1) ложка (ключевые слова; металл, еда)
2) меч (ключевые слова; металл, бой)
3) вилка (ключевые слова; металл, еда)
Таким образом, запрос вернет узел ключевого слова, количество артефактов, связанных с ключевым словом (3, ложка, меч и вилка), количество ключевых слов, связанных артефактом между узлами ключевых слов (металл имеет 2 косвенных связи с едой и 1 с боевыми действиями).
Как только я разобрался с этим, ради скорости, потому что я понимаю, что это большой запрос, создайте связь related_to между ключевыми словами с подсчетом количества общих артефактов, которые они разделяют. Выберите только 1 запись, чтобы создать эту связь, чтобы проверить, как она работает :) (следовательно, ограничение 1)
MATCH (n:Keyword)-[r*2]-(x:Keyword)
WITH n, COUNT(r) AS c, x
LIMIT 1
MERGE (n)-[s:RELATED_KEY]-(x) SET s.weight = c
Я использую версию сообщества neo4j (2.1.6),
Большое спасибо, Энди