假设我有以下案文:
text (ref 1) more text
我知道所有的推荐信都在哪。如何为所有引用创建neo4j节点并以文本形式引用它们?就像第四段中提到的第十条一样。
发布于 2017-09-10 06:37:00
有很多方法可以完成您所要求的(在Neo4j内部或外部)。如果您可以将带有引用的文本输入到Neo4j中(并且它们的格式类似于您的问题状态),那么您可以剪短引用If,并根据需要创建节点。下面是一个基本的例子:
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查找的节点。显然,您希望在这些数据上添加更多元数据,但这在很大程度上取决于您的需求。
注意:合并将创建节点,但如果它已经存在,则不会。此存在性检查需要一个查找操作,这将是一个昂贵的扫描没有索引。首先创建约束确保我们将有一个索引用于这些查找。
https://stackoverflow.com/questions/46137157
复制相似问题