关系属性上的Neo4j手动索引
我将在我的应用程序中尝试,以解决我面临的性能问题 我有几个问题在官方Neo4j文档中不清楚: 该语句将创建与相同名称的关系索引 关系类型,在本例中为目的地和添加关系 将其属性添加到索引中关系属性上的Neo4j手动索引,neo4j,spring-data-neo4j,neo4j-apoc,spring-data-neo4j-5,Neo4j,Spring Data Neo4j,Neo4j Apoc,Spring Data Neo4j 5,我将在我的应用程序中尝试,以解决我面临的性能问题 我有几个问题在官方Neo4j文档中不清楚: 该语句将创建与相同名称的关系索引 关系类型,在本例中为目的地和添加关系 将其属性添加到索引中 何时需要创建此关系索引?它应该执行一次(比如在应用程序启动时),或者每次在航班和机场节点之间添加新的-[r:DESTINATION]>关系时,我是否需要调用此APOC函数 如果存在-[r:DESTINATION]->关系更新,如何在适当的手动索引中更新此信息 如果删除一些航班或机场节点,我是否需要手动从手动索引
航班
和机场
节点之间添加新的-[r:DESTINATION]>
关系时,我是否需要调用此APOC函数-[r:DESTINATION]->
关系更新,如何在适当的手动索引中更新此信息航班
或机场
节点,我是否需要手动从手动索引中查找并删除相应的-[r:DESTINATION]->
关系,或者由APOC和Neo4j自动完成apoc.index.addRelationship
,以便为关系属性创建手动索引。我可以为此使用org.neo4j.ogm.session.session.query
吗我同意Neo4J在这个问题上的文档确实不够充分 回答您的问题: 1.如果您从使用自动关系索引的较旧版本升级Neo4J,则需要运行APOC(仅一次)以使用以下内容索引现有关系:
MATCH()-[r]->()调用apoc.index.addRelationship(r,['property_1','property_2'])返回计数(*)代码>
然后,您需要为添加到该索引中的任何新关系设置一个触发器,运行一次类似以下的操作:
调用apoc.trigger.add('RELATIONSHIP_INDEX','diswind{createdRelationships}作为r MATCH()-[r]->()调用apoc.INDEX.addRelationship(r,['property_1','property_2'])返回计数(*),{phase:'after'}
(之前需要在neo4j.conf
文件中激活apoc.trigger.enabled=true
)
2.见上文
3.您还需要从索引中删除它们,这不是自动完成的。为此,使用removeRelationshipByName()
设置APOC触发器
4.应该是可能的
5.Neo4J的人应该回答这个问题
希望这能帮你节省一些时间 @alexanoid我关于删除关系的想法是不对的。它们不会自动从索引中删除。我用正确的答案修改了上面的答案。
MATCH (:Flight)-[r:DESTINATION]->(:Airport)
CALL apoc.index.addRelationship(r,['taxi_time'])
RETURN count(*)