2017-09-10 13 views
0

如何存儲文本引用假設我有以下文字:在Neo4j的

text (ref 1) more text 

我知道所有的引用。如何爲所有引用創建neo4j節點並在文本中引用它們?就像看到第四段中有第十個參考文獻一樣。

回答

1

有很多方法可以完成您要求的內容(Neo4j內部或外部)。如果您可以將帶有引用的文本引入Neo4j(並且它們的格式與您的問題狀態相同),則可以根據需要剪切引用ID並創建節點。這裏有一個基本的例子:

CREATE CONSTRAINT ON (r:Ref) ASSERT r.id IS UNIQUE; 

    WITH 'text (ref 1) more (ref 1) text (ref 20)' AS txt 
    WITH [x IN split(txt, '(ref ')[1..] | split(x, ')')[0]] AS ref_ids 
UNWIND ref_ids AS id 
    WITH DISTINCT id 
MERGE (:Ref {id:id}) 
RETURN count(id) 

這將在Neo4j中創建節點,可以通過參考ID在文本中查找。您顯然希望在這些元數據上添加更多元數據,但這很大程度上取決於您的要求。

注意:MERGE將創建該節點,但如果該節點已存在則不會。這種存在檢查需要查找操作,這將是一個昂貴的沒有索引的掃描。首先創建CONSTRAINT確保我們將爲這些查找創建索引。