извините, если я повторяю что-то, что уже было задано, но я не могу найти ничего, что бы указывало мне правильное направление нигде в документах, ТАК или иначе ...
Итак, у меня огромный набор данных, и я выполняю матч, который выглядит следующим образом:
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
?
Спасибо!