Nece4j的Lucene索引没有按预期工作

时间:2013-06-11 14:24:50

标签: lucene neo4j

我认为标题有点模糊,所以我准备解释我的问题。

我在Neo4j中创建了一些节点,然后将它们编入索引:

Index<Node> myindex = graphDb.index().forNodes(
                "myindex",
                MapUtil.stringMap(IndexManager.PROVIDER, "lucene", "type",
                        "fulltext"));

Node n = graphDb.createNode(); //create the node
node.setProperty("firstname", "firstname"); //add properties
node.setProperty("familyname", "familyname");
myindex.add(node, "familyname", "familyname"); //index it 

但是当我需要更新Node“n”的属性(例如将“familyname”更改为“fname”)时,通过基于索引的搜索无法找到此节点!

所以在更新属性之前,这个cypher查询

start n= node:myindex(familyname:"familyname") return n
 正在返回节点,而在更新后,我期待:

start n= node:myindex(familyname:"fname") return n

使用新属性返回相同的节点,但它不起作用!虽然第一个查询始终有效,但索引绑定到属性“familyname”

对此有何想法?

谢谢

1 个答案:

答案 0 :(得分:0)

因此,tstorms建议,解决方案是在更新属性后删除索引:

n.setProperty("familyname","fname");
myindex.remove(n);

然后使用新属性添加它:

myindex.add(n, "familyname","fname");