如何返回Neo4J中每行的单词出现次数?

如何返回Neo4J中每行的单词出现次数?,neo4j,cypher,neo4j-apoc,Neo4j,Cypher,Neo4j Apoc,我目前正在尝试返回1)包含单词“strategy”或同义词“strategy”的所有节点,2)对于返回的每一行,都有目标单词在该特定节点中出现的次数计数。我尝试过以下方法(机密信息模糊),计数高得出奇,如180: MATCH (l:Label)<-[:CONTAINS]-(pdf:Pdf)<-[*1..9]-(title:Title)<-[*1..9]-(text), (s)-[:SYNONYM_OF]->(s1:Seed_Term {name: "Stra

我目前正在尝试返回1)包含单词“strategy”或同义词“strategy”的所有节点,2)对于返回的每一行,都有目标单词在该特定节点中出现的次数计数。我尝试过以下方法(机密信息模糊),计数高得出奇,如180:

MATCH (l:Label)<-[:CONTAINS]-(pdf:Pdf)<-[*1..9]-(title:Title)<-[*1..9]-(text), 
 (s)-[:SYNONYM_OF]->(s1:Seed_Term {name: "Strategy"}) 
 WHERE l.name=x AND (text.content CONTAINS s.name) 
 OR (text.content CONTAINS s1.name) 
 OR (text.content CONTAINS toLower(s.name)) 
 OR (text.content CONTAINS toLower(s1.name)) 
 RETURN COALESCE("text: ", "") + text.content as text, 
 COUNT(s.name) + COUNT(s1.name) as count 
 order by count desc LIMIT 1

MATCH(l:Label)在没有更清晰的图形的情况下解决这个问题有点棘手,但是如果没有其他人来解决这个问题,我将在稍后进行讨论。也就是说,我建议简化你的密码<代码>以collect(toLower(s.name))+toLower(s1.name)作为syn<代码>下载(text.content).
。发生的事情是,您正在计算
s
节点,而不是匹配的数量
apoc.text.indexsof
可以为您找到所需的内容,但您最好利用全文索引,它们非常容易实现,并且会很快为您解决此问题。谢谢。这确实有帮助;使用apoc.text.indexesOf找到正确答案。