【发布时间】:2016-12-22 04:16:56
【问题描述】:
我需要获取文本并将它们保存到 Neo4j。之后,我将该文本的每个单词分开,并在它们之间创建一个 [:NEXT] 关系,指示在另一个单词之后的单词,并创建一个 [:CONTAINS] 关系,指示文本包含该单词。 最后,我尝试在文本中获取具有更多关系 [:NEXT] 但不在整个数据库中的单词。仅在给定的文本中。
不幸的是,我只得到了整个数据库的总和。
查询是:
query = '''
WITH split("%s"," ") as words
MERGE (p:Post {id: '%s', text: '%s'})
WITH p, words
UNWIND range(0,size(words)-2) as idx
MERGE (w1:Word {name:words[idx]})
MERGE (w2:Word {name:words[idx+1]})
MERGE (w1)-[:NEXT]->(w2)
MERGE (p)-[:CONTAINS]->(w2)
MERGE (p)-[:CONTAINS]->(w1)
WITH p
MATCH (p)-[c:CONTAINS]->(w:Word)
MATCH ()-[n1:NEXT]->(:Word {name: w.name})<-[:CONTAINS]-(p)
MATCH (p)-[:CONTAINS]-(:Word {name: w.name})-[n2:NEXT]->()
WITH COUNT(n1) + COUNT(n2)AS score, w.name AS word, p.text AS post, p.id AS _id
RETURN post, word, score, _id;
''' %(text, id, text)
我只是找不到这里的问题。
谢谢!
【问题讨论】:
-
你能描述一下这意味着支持什么样的操作吗?如果您希望实现快速文本搜索、查找和评分,那么已经设置了更好的工具来执行此操作,例如 ElasticSearch。
-
谢谢!我看看这个
-
@InverseFalcon 我阅读了有关 ElasticSearch 的信息,但我发现这不是我想要的。谢谢,伙计!