Neo4j: результаты дублируются - PullRequest
0 голосов
/ 11 октября 2018

Итак, я пытаюсь найти каждый узел, у которого есть хотя бы один общий узел, с другим.Это запрос, который я использую для этого:

MATCH (source:Article)--(neighbor)--(target:Article)
WHERE NOT (source.unique_url) = (target.unique_url)
WITH DISTINCT [source.unique_url, target.unique_url] AS combo, 
     source, target, neighbor 
RETURN combo, 
       source.unique_url AS source_unique_url, 
       source.title AS source_title, 
       source.url AS source_url, 
       target.unique_url AS target_unique_url, target._id AS target_id,
       target.title AS target_title,  
       count(neighbor) AS common_neighbors
ORDER BY common_neighbors DESCENDING

Но, к сожалению, [source.unique_url, target.unique_url] всегда дублируется, как если бы у одного узла был общий сосед с другим, я всегда получаю такие результаты:

[url1, url2]
[url2, url1]
[url1, url2]
[url2, url1]

Я проверил, и данные не дублируются в БД, поэтому запрос дублирует их, кто-нибудь знает, что может быть причиной этого?Большое спасибо!

1 Ответ

0 голосов
/ 12 октября 2018

Попробуйте изменить начало запроса следующим образом.

  1. Добавить направление к отношениям
  2. Добавить идентификатор (источник)> идентификатор (цель)
MATCH (source:Article)-->(neighbor<)--(target:Article)
WHERE id(source) > id(target)
WITH ...
...