如何在Neo4j中存储文本引用

时间:2017-09-10 03:57:28

标签: neo4j

假设我有以下文字:

text (ref 1) more text

我知道所有参考文献都在哪里。如何为所有引用创建neo4j节点并在文本中引用它们?正如在第四段中看到第10个参考文献一样。

1 个答案:

答案 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可确保我们为这些查找提供索引。