我想索引大型数据库(约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
混乱的情况下运行精确的整数查询?
答案 0 :(得分:2)
您需要的索引查找是完全匹配,而不是查询。
尝试更换
index.query("id", 1000)
同
index.get("id", 1000)