2017-09-10 18 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确保我们将为这些查找创建索引。