Neo4j - подсчет количества связей между известными узлами - PullRequest
0 голосов
/ 17 января 2019

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

Итак, у меня огромный набор данных, и я выполняю матч, который выглядит следующим образом:

MATCH (s:Sentence)-[:HAS_WORD]->(w:Word)
WHERE w.word in ['apple', 'banana', 'orange']

RETURN s, size((s)-[:HAS_WORD]->()), COUNT(w)

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

Получение общего количества слов в предложении очень быстро с size((s)-[:HAS_WORD]-()), но получение второй части (сколько найденных слов было найдено в каждом предложении) - вот где у меня ОГРОМНАЯ проблема с производительностью.

Я попробовал очевидное COUNT(w), а также присвоение переменной для отношения HAS_WORD, например. [r:HAS_WORD] и выполнение COUNT(r), но производительность всегда очень медленная, и я получаю сумасшедший всплеск использования ЦП (выход за пределы одного ядра, которое я даже не понимаю, так как считал, что один запрос на шифрование может использовать только один ядро!).

Использование size((s)--(w)) всегда возвращает 1, насколько я понимаю, оно возвращает расстояние между известными узлами, а не количество появлений шаблона ... Я продолжаю чувствовать, что что-то здесь мне не хватает. Как бы вы посчитали количество w найденных для каждого s?

Спасибо!

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