Cypher-запрос для получения порядка узлов по количеству связей - PullRequest
0 голосов
/ 06 июня 2018

При использовании neo4j я столкнулся с проблемой в случае использования, когда мне нужно получить данные, используя порядок шифров по количеству отношений из входного набора узлов.

Я очень новичок в neo4j и сожалею, еслипроблема слишком наивна.

Демонстрационный график:

enter image description here

Что я пытаюсь сделать, для входной строки сказать "JavaИнженер-разработчик "возвращает все узлы, подключенные к узлу Java, разработчику и инженеру, но дает наивысший приоритет узлу, подключенному ко всем трем из них, затем низкий приоритет к узлам, подключенным к 2, и наименьший к узлам, связанным только с одним из них.

Я написал базовый запрос:

match(n:Token{name:"java"})-[res]->(y)
match(n1:Token{name:"developer"})-[res1]->(y1)
match(x:Token{name:"engineer"})-[res2]->(y2)
return n,n1,x,res,res1,res2,y,y1,y2

Проблемы, с которыми я сталкиваюсь, связаны с назначением приоритетов узлам, связанным со всеми 3 входными узлами, обработке случая, если присутствует какой-либо неправильный входной токен (например, Java, разработчик, инженер и Tesla)., где Тесла не является токеном).

Спасибо

1 Ответ

0 голосов
/ 06 июня 2018

Следующий запрос предполагает, что ему передан input параметр , содержащий входную строку, и возвращает для каждого отдельного term:

  • сам термин
  • набор путей к этому термину из соответствующих Token узлов,
  • количество путей, найденных для термина

Результаты также возвращаются в порядке убыванияколичество найденных путей.

UNWIND SPLIT($input, ' ') AS name
MATCH p=(n:Token {name: name})-[:RELATED_TO]->(term)
WITH term, COLLECT(p) AS paths
ORDER BY SIZE(paths) DESC
RETURN term, paths, SIZE(paths) AS count
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...