Neo4j объединяет или объединяет результаты из двух полнотекстовых индексов - PullRequest
0 голосов
/ 22 января 2020

Я попробовал ниже с полнотекстовым индексом, как показано ниже

CALL db.index.fulltext.queryNodes("index1", "x") YIELD node as node1, score as score1
With collect({id: node1.id, score: score1}) as rows1
CALL db.index.fulltext.queryNodes("index2", "name:Y") YIELD node as node2, score as score2
With collect({id: node2.id, score: score2}) as rows2, rows1
return rows1 + rows2 as final

Вышеприведенное возвращает результат, если у обеих есть несколько записей, если у узла 2 нет соответствующих результатов, тогда окончательный результат будет пустым, даже если узел 1 есть несколько результатов.

Мое требование - объединить или объединить оба, что соответствует любому из условий. Не могли бы вы помочь мне достичь этого.

Заранее спасибо.

1 Ответ

0 голосов
/ 23 января 2020

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

CALL db.index.fulltext.queryNodes("index1", "x") YIELD node, score
RETURN node, score
UNION
CALL db.index.fulltext.queryNodes("index2", "name:Y") YIELD node, score
RETURN node, score
...