我认为标题有点模糊,所以我准备解释我的问题。
我在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”
对此有何想法?
谢谢
答案 0 :(得分:0)
因此,tstorms
建议,解决方案是在更新属性后删除索引:
n.setProperty("familyname","fname");
myindex.remove(n);
然后使用新属性添加它:
myindex.add(n, "familyname","fname");