首页 > 解决方案 > 如何幂等地创建 Neo4j 全文索引?

问题描述

我有一些运行 Cypher 初始化脚本的集成测试套件,我希望所有操作都是幂等的。

第一次运行CALL db.index.fulltext.createNodeIndex("usernames", ["User"], ["username"])正常,但在随后的尝试中失败。

我努力了:

CALL apoc.do.when(
  apoc.schema.node.indexExists("User", ["username"]), 
  'RETURN NULL', 
  'CALL db.index.fulltext.createNodeIndex("usernames", ["User"], ["username"])'
)

这导致:

Failed to invoke procedure `apoc.do.when`: Caused by: org.neo4j.graphdb.security.AuthorizationViolationException: Schema operations are not allowed for user 'neo4j' with roles [PUBLIC, admin] overridden by TOKEN_WRITE overridden by TOKEN_WRITE.

如何使用全文索引来实现这一点?

这是在 Neo4j 4.2.1

标签: neo4jneo4j-apoc

解决方案


您不能运行密码查询来删除/创建索引。但是您可以分两步删除/创建它,例如

CALL db.index.fulltext.drop("usernames")  ;
CALL db.index.fulltext.createNodeIndex("usernames", ["User"], ["username"]) ;

推荐阅读