0

我想在大型数据库(约 2000 万个节点)中的节点上索引一个整数字段。我希望工作的行为如下:

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

// Add node to graph (inserter is an instance of BatchInserter)
properties.put("id", 1000);
long node = inserter.createNode(properties);

// Add index 
index.add(node, properties);

// Retrieve node by index. RETURNS NULL!
IndexHits<Node> hits = index.query("id", 1000);

我将键值对添加到索引中,然后通过它进行查询。可悲的是,这不起作用。

我目前的 hackish 解决方法是使用 Lucene 对象并按范围查询:

// Add index 
properties.put("id", ValueContext.numeric(1000).indexNumeric());
index.add(node, properties);

// Retrieve node by index. This still returns null
IndexHits<Node> hits = index.query("id", 1000);

// However, this version works
hits = index.query(QueryContext.numericRange("id", 1000, 1000, true, true));

这是完美的功能,但范围查询真的很愚蠢。有没有办法在没有这种QueryContext.numericRange混乱的情况下运行精确的整数查询?

4

1 回答 1

2

您需要的索引查找是完全匹配,而不是查询。

尝试替换 index.query("id", 1000)index.get("id", 1000)

于 2012-10-09T13:23:44.523 回答