我创建了以下Neo4j APOC触发器,它将节点属性添加到手动索引中:
CALL apoc.trigger.add('CREATE_NODES_TRIGGER', "UNWIND {createdNodes} AS n
WITH n WHERE labels(n)[1] IN ['Title','Name','Character']
CALL apoc.index.addNodeByName(labels(n)[1], n, keys(n))
RETURN true", {phase:'before'})
当我执行以下查询时:
CALL apoc.index.nodes('Character','name:An*') YIELD node AS c, weight
RETURN c.name, weight LIMIT 10
它正确返回数据:
c.name weight
"Annette Porter" 1.0
"Anke Bauernfeind" 1.0
"Angel's Henchman" 1.0
"Anna Slovatzka Marshall" 1.0
"Andrew Horvath" 1.0
"Angela Somes" 1.0
"An-Soo 'Alison' Kim" 1.0
"Annette Holman" 1.0
"Anita Wilcox" 1.0
"Anna Cerdick" 1.0
name:an*
CALL apoc.index.nodes('Character','name:an*') YIELD node AS c, weight
RETURN c.name, weight LIMIT 10
结果为空。
我认为我应该在将属性值添加到索引之前将其小写。我说得对吗?
如果是这样,请您帮助改进触发器以使属性值小写:
呼叫apoc.trigger.add('CREATE_NODES_TRIGGER',“展开{createdNodes}为n”
呼叫apoc.index.addNodeByName(标签(n)[1],n,键(n))
或者,请提出另一种解决这个问题的方法。谢谢!
我在neo4j.conf中找到了以下属性:
apoc.autoIndex.enabled=true
并将所有节点添加到索引中:
CALL apoc.index.addAllNodes('movies',{
Title: ["primaryTitle", "originalTitle"],
Name: ["primaryName"],
Character: ["name"]}, {autoUpdate:true})
所以,现在我有一个问题:威尔
apoc.autoIndex.enabled=true
apoc.index.addAllNodes
Title
,
Name
和
Character
节点也到索引?