neo4j + lucene中的整数索引行为

时间:2012-10-08 17:09:13

标签: lucene indexing neo4j

我想索引大型数据库(约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混乱的情况下运行精确的整数查询?

1 个答案:

答案 0 :(得分:2)

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

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