Получение наилучшего результата поиска по группе от Neo4j - PullRequest
0 голосов
/ 08 ноября 2019

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

UNWIND ["nursing care requirements", "relatives tutoring student nurses", "blood pressures", "emotional support", "intravenous infusions", "junior staff", "patient samples", "pulses", "workloads"] AS x
CALL db.index.fulltext.queryNodes("full-text-skills", x) YIELD node, score
RETURN x, node.name, score

Он работает нормально и возвращает весь соответствующий результат (1000 строк для приведенного выше примера). Теперь я хочу получить самый подходящий навык с точки зрения свойства score, возвращаемого db.index.fulltext.queryNodes (1 строка на элемент ввода в списке). Я попытался добавить предел после оператора return, но он установил ограничение на весь вывод. Что я действительно хочу, так это поставить ограничение на количество результатов поиска для каждого элемента в списке ввода.

Ответы [ 2 ]

0 голосов
/ 09 ноября 2019

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

0 голосов
/ 08 ноября 2019

Я наконец-то получил решение вышеуказанной проблемы. Мы можем использовать сбор для сбора результатов по группам и в зависимости от лимита мы можем получить результаты по группам. Cypher запрос будет -

UNWIND ["nursing care requirements", "relatives tutoring student nurses", "blood pressures", "emotional support", "intravenous infusions", "junior staff", "patient samples", "pulses", "workloads"] AS x
CALL db.index.fulltext.queryNodes("full-text-skills", x) YIELD node, score
RETURN x,collect(node.name)[0..3]
...