Neo4j中批量插入期间的数字索引

时间:2011-08-08 12:44:29

标签: java indexing numeric neo4j batch-insert

我正在使用批量插入节点和Neo4j图形数据库中的关系。一切正常,包括多个属性([String] name, [int] id)的索引。但是,当我尝试按范围查询属性“id”的索引时,它不返回任何结果。

我从the non-batch example推导出来的问题是,我无法向ValueContext提供数字BatchInserterIndex,如下所示:

Map<String, Object> properties = new HashMap<String, Object>(2);

properties.put("name", urs.getString(1));

// I can do this:
properties.put("id", urs.getInt(2));

// But not this (throws an "invalid type" exception):
// properties.put("id", new ValueContext( urs.getInt(2) ).indexNumeric());

long node_id = inserter.createNode(properties);
index.add(node_id, properties);

在批量插入过程中,我没有找到任何关于数字索引的documentation

查询代码如下:

IndexManager index = gdb.index();
Index<Node> people = index.forNodes("people");
IndexHits<Node> hits = people.query(
    QueryContext.numericRange("id", min_id, max_id)
  );

是否可以在批量插入操作中添加数字索引,以便我可以按范围查询值?

感谢。


修改

我做错了是我尝试将同一属性地图传递给createNode()index.add()。前者崩溃了,因为它不需要ValueContext并且不理解它。因此,请务必将不同的属性映射传递给这些方法,并在ValueContext中包含index.add - ed数值:

Long value = 1L;

long node_id = inserter.createNode(
  MapUtil.map("id", value, "other_prop", other_value));

index.add(node_id,
  MapUtil.map("id", ValueContext.numeric( value ), "other_prop", other_value));

1 个答案:

答案 0 :(得分:0)

您使用的是哪个版本的neo4j?它正在最新版本中运行