Neo4j Cypher цепочка вывода из запроса на совпадение с APOC - PullRequest
0 голосов
/ 26 апреля 2018

Я хотел использовать процедуру Neo4j Cypher apoc.index.search. В настоящее время я использую Neo4j CE 3.1.0. Я успешно настроил и протестировал процедуру как отдельный запрос, такой как:

call apoc.index.search("Contact2", "Contact2.FirstName:monica~")

Теперь я хочу сначала выполнить запрос MATCH, чтобы получить набор узлов, и подсказать FirstNames, найденный при вызове этой процедуры APOC на узле Contact2, чтобы выяснить, могу ли я найти что-либо подобное в Contact2 узел и соответствующий вес.

Это возможно? Я пробовал несколько итераций, используя ключевое слово WITH, но безрезультатно. Спасибо.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

@ cybersam спасибо за ваш ответ. Я не пробовал ваш, но я также решил это самостоятельно (после нескольких дней попыток). Мой синтаксис выглядит следующим образом:

// Contact1 - моя исходная таблица. Contact2 - моя таблица назначения

MATCH (a:Contact1) WITH a.FirstName AS A 
CALL apoc.index.search("Contact2", "Contact2.FirstName:" + A + "~") 
YIELD node, weight RETURN *

Я не уверен, что это лучший способ, но у меня это сработало

0 голосов
/ 26 апреля 2018

Вы можете добавить каждое значение firstName в виде отдельных нечетких поисковых терминов в строку запроса, переданную apoc.index.search. Например:

MATCH (f:Foo)
WITH REDUCE(
    s = 'Contact2.FirstName:', n IN COLLECT(DISTINCT f.firstName) |
    s + n + '~ '
  ) AS query
CALL apoc.index.search("Contact2", query)
...
...