Neo4j批处理插入期间的数字索引



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

问题,因为我从非批处理示例中推导出来,是我不能像这样向BatchInserterIndex提供数字ValueContext:

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);

我没有找到任何关于批量插入期间数字索引的文档。

查询代码如下:

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,也不理解它。因此,请确保将不同的属性映射传递给这些方法,并在用于index.add的映射中包含ValueContext的数值:

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));

您使用的是哪个版本的neo4j ?最新版本

相关内容

  • 没有找到相关文章

最新更新