假设我有以下文字:
text (ref 1) more text
我知道所有参考文献都在哪里。如何为所有引用创建neo4j节点并在文本中引用它们?正如在第四段中看到第10个参考文献一样。
答案 0 :(得分: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可确保我们为这些查找提供索引。