我正在处理RDF文件导入程序,但我遇到了问题,我的数据文件有重复的节点。出于这个原因,我使用大的ID来使用批量插入器插入节点,但进程很慢。当迈克尔建议使用索引时,我已经看到了这个post,但过程仍然很慢。
另一种选择是合并重复的节点,但我认为在Neo4J中没有自动选项。我错了吗?
有人能帮帮我吗? :)
谢谢!
答案 0 :(得分:0)
完美:)数据将具有以下结构:
chembl_activity:CHEMBL_ACT_102540 bao:BAO_0000208 bao:BAO_0002146。
chembl_document:CHEMBL1129248 cco:hasActivity chembl_activity:CHEMBL_ACT_102551。
chembl_activity:CHEMBL_ACT_102540 cco:hasDocument chembl_document:CHEMBL1129248。
每一行对应两个节点之间的关系,我们可以看到节点 chembl_activity:CHEMBL_ACT_102540 是重复的。
我想将节点名称的哈希码保存为id,但该哈希码是一个非常大的数字,会减慢进程的速度。所以我可以检查id只能创建关系,而不是节点。
谢谢大家! :)
答案 1 :(得分:0)
CSV批量导入程序中没有重复处理(它计划用于下一个版本),因为它非常重要且内存昂贵。
最好去除你的副本。
不要使用外部提供的ID作为node-id,它可以从一开始就变得很大,但是不起作用。使用有效的映射(如trove)来保持密钥和node-id之间的映射。
我通常使用两遍和一个数组,然后对数组进行排序,数组索引成为node-id,排序后你可以做另一个nulls-out重复项的传递