Neo4j 是否允许基于函数的索引

Does Neo4j allow function based indexes

我想在 neo4j 的一个或多个节点属性上创建多个包含用户定义函数结果的索引。

示例属性:姓名、邮政编码

函数:name_1st_3_chars + 邮编

姓名:"dave",邮政编码:"nw14da"

函数值:davnw14da

我希望能够根据函数值进行非常快速的节点查找。

您可以通过一些 java 编码来实现这一点。用你的 GraphDatabaseService 注册一个 TransactionEventHandler。 TransactionEventHandlers 提供挂接到事务机制的回调函数。这种方式可以做一个"function property"描述的计算。计算出来的属性需要用setProperty存储。

建立索引,使用CREATE INDEX ON :MyLabel(myfunctionProperty)

有了它,像 MATCH (something:MyLabel) WHERE something.myfuntionPropery = 'davnw14da' RETURN something 这样的查询将使用声明的索引。