我需要獲取文本並將它們保存到Neo4j。之後,我將該文本的每個單詞分隔開來,並在它們之間創建一個[:NEXT]關係,以指示在另一個之後出現的單詞和指示該文本包含該單詞的[:CONTAINS]關係。 最後,我嘗試在文本中找到具有更多關係[:NEXT]但不包含在整個數據庫中的單詞。只在給定的文本中。Cypher查詢返回不良結果
不幸的是我只是得到了整個數據庫的總和。
查詢是:
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
謝謝!我會看看這個 –
@InverseFalcon我讀了關於ElasticSearch,我發現它不是我正在尋找的。謝啦! –