很抱歉,如果我要重复已经被问到的问题,但是我找不到任何东西可以指向我在文档中任何地方的正确方向,诸如此类……
所以我有一个庞大的数据集,并且正在执行一个看起来像这样的比赛:
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]-())
获得一个句子中的单词总数是非常快的,但是获得第二部分(每个句子中找到了多少个匹配的单词)是我遇到巨大性能问题的地方。 / p>
我尝试了明显的COUNT(w)
,并且还为HAS_WORD
关系分配了一个变量,例如[r:HAS_WORD]
并执行COUNT(r)
,但性能始终超慢,而且我的CPU使用率出现了疯狂的飙升(超出了我甚至不理解的单个内核,因为我认为单个密码查询可以只使用一个内核!)
使用size((s)--(w))
总是返回1,据我了解它返回已知节点之间的距离,而不是模式出现的次数...
我一直感觉好像我在这里缺少什么。
您将如何计算每个w
被发现的s
的数量?
谢谢!