как искать узлы на основе различных свойств узлов в neo4j - PullRequest
0 голосов
/ 01 февраля 2020

Я разрабатываю приложение, используя nodejs и Neo4j. У меня есть узел: человек, который имеет такие свойства, как имя, город и школа. теперь я хочу предоставить функцию поиска, где он / она ищет информацию о человеке по имени, городу, школе или любой комбинации. Так есть ли способ, которым я могу достичь этого в neo4j

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Вы можете использовать что-то вроде следующего запроса:

MATCH (p:Person)
WHERE p.name = $name AND p.city = $city AND p.school=$school
RETURN p {.name, .city, .school}
UNION
MATCH (p:Person)
WHERE p.name = $name OR p.city = $city OR p.school=$school
RETURN p {.name, .city, .school}

Где: $ name, $ city и $ school - это параметры, которые вы передадите, исходя из внешнего интерфейса. Кроме того, используя UNION между двумя операторами MATCH, вы получаете следующие преимущества:

  • ваши дубликаты удаляются
  • лучшие совпадения будут вашими первыми результатами, учитывая, что наилучшее совпадение является результатом встречи все 3 критерия: имя, город, школа
  • запрос будет выполнен быстро, если у вас нет большого набора данных
  • читаемый запрос с разделением 2 операторов MATCH.

Справочник по UNION: https://neo4j.com/docs/cypher-manual/current/clauses/union/#union -combine-query-remove-duplicates

Надеюсь, это поможет!

0 голосов
/ 01 февраля 2020

Да, это возможно.

Например, чтобы найти Person узлы с указанием name и city, вы можете использовать этот запрос Cypher:

MATCH (p:Person)
WHERE p.name = 'KMJ' AND p.city = 'Noida'
RETURN p;

Поскольку вы, кажется, изучаете neo4j, см. Страницу Getting * для некоторых уроков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...