如何在Cypher中不指定节点标签创建全文索引

问题描述 投票:0回答:1

我尝试根据此文档

为所有节点创建全文索引

这是我提出的查询:

CREATE FULLTEXT INDEX full_text_docs
FOR (n)<-[:contains]-(d:DocumentFile) ON EACH [n.entity_id, d.entity_id]
IF NOT EXISTS

但我收到以下错误:

neo4j.exceptions.CypherSyntaxError: {code: Neo.ClientError.Statement.SyntaxError} {message: Invalid input ')': expected ":" (line 3, column 39 (offset: 76))
"                FOR (n)<-[:contains]-(d:DocumentFile) ON EACH [n.entity_id, d.entity_id]"
                       ^}

查询源自两个示例:

CREATE FULLTEXT INDEX namesAndTeams FOR (n:Employee|Manager) ON EACH [n.name, n.team]
CREATE FULLTEXT INDEX communications FOR ()-[r:REVIEWED|EMAILED]-() ON EACH [r.message]

第一个示例使用

n:label
(但我不想指定标签),第二个示例使用关系但未指定
n
(我想指定 n,以便可以对其进行索引)。

如何更改查询,以便为所有匹配

(n)<-[:contains]-(d:DocumentFile)
的节点创建全文索引?

python neo4j cypher
1个回答
0
投票

在 Neo4j 的 Cypher 查询语言中,无法直接在不指定节点标签的情况下创建全文索引。全文索引通常与节点属性相关联,并且通常与特定标签绑定以缩小搜索空间并提供更好的性能。

但是,如果您想在不指定节点标签的情况下创建全文索引,您仍然可以通过在多个节点标签通用的属性上创建索引来实现。方法如下:

密码 复制代码 在:标签(属性)上创建全文索引 在此示例中,将 Label 替换为您要使用的标签(或者,如果您想要跨所有标签对属性建立索引,则完全省略它),并将 property 替换为您要在其上创建全文索引的属性的名称。

请记住,如果不指定标签,索引将应用于图中的所有节点,如果您有一个大型数据集,这可能不适合性能。通常最好通过尽可能指定标签来缩小索引的范围。

© www.soinside.com 2019 - 2024. All rights reserved.