【问题标题】:Having trouble with indexing in Neo4jNeo4j 中的索引有问题
【发布时间】:2014-02-13 09:41:30
【问题描述】:

我有一个包含以下详细信息的数据集:

  • 140 万个节点
  • 290 万关系
  • 1500 万个属性(包括性别、姓名、订阅者 ID 等)
  • 1 种关系类型(已联系)

我已经使用https://github.com/jexp/batch-import/tree/20将数据批量导入我机器上的数据库(64 位,16 核,16 GB RAM)

我正在尝试在 Subscriber_ID 上索引这些节点,但我不确定我在做什么。

我跑了

start n = node(*) set n:Subscribers

我的理解是这会为每个节点创建一个标签(这是正确的)

接下来我跑了

create index on :Subscribers(SUBSCRIBER_ID)

我认为应该为属性“SUBSCRIBER_ID”上带有“订阅者”标签的所有节点创建一个索引。 (对吗?)

现在当我去 Neo4j-sh 运行时

neo4j-sh (?)$ schema
==> Indexes
==>   ON :Subscribers(SU_SUBSCRIBER_ID) ONLINE  
==> 
==> No constraints

但是当我运行以下命令时,它说没有为节点设置索引。

neo4j-sh (?)$ index --indexes
==> Node indexes:
==> 
==> Relationship indexes: 

我有几个问题

  1. 我必须告诉它索引现有数据吗?如果是这样,我该怎么做 那?
  2. 我怎样才能使用索引?我已通读 文档,但我在遵循它时遇到了一些麻烦。
  3. 看起来 就像我可以在运行批量导入时设置索引 脚本,但我无法真正理解如何......有人可以解释一下 请?

这是我的数据示例:

Nodes.txt

id  SU_SUBSCRIBER_ID    CU_FIRST_NAME   gender  SU_AGE
0   123456                       Ann    F        56
1   832746                         ?    UNKNOWN  -1
2   546765                       Tom    UNKNOWN  -1
3   768345                     Anges    F        72
4   267854                  Aoibhlinn   F        38

rels.csv

start   end rel counter 
0            3  CONTACTED   2
1            2  CONTACTED   1
1            4  CONTACTED   1
3            2  CONTACTED   2
4            1  CONTACTED   1

【问题讨论】:

    标签: indexing neo4j cypher


    【解决方案1】:

    schema 是要查看的正确命令。

    Cypher 自动为MERGEMATCH 使用标签索引。

    使用 Java Core-API,您可以使用 db.findNodesByLabelAndProperty(label,property,value)

    你做了正确的事,除了一件。您可以在批量导入时在节点上创建标签。

    只需在您的 CSV 文件中添加一个 l:label 字段,其中包含一个逗号分隔的每个节点的标签列表。如该分支的自述文件中所示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 2013-09-12
      • 1970-01-01
      • 2013-05-25
      相关资源
      最近更新 更多