根据节点名称查询标签有无快捷查询

当前有个需求场景,用户输入问题,通过ner模型识别出节点名称,通过节点名称,查询其对应的标签(对应mysql表字段)。

Neo4j:
创建一个名称为 AM0001 的节点,并给它添加标签 sku

CREATE (n:sku {name: 'AM0001'})

查询时,直接根据节点的名称 AM0001 查询标签为 sku 的节点:

MATCH (n {name: 'AM0001'}) RETURN labels(n) AS labels, n

Nebula Graph
首先需要创建标签 sku

CREATE TAG IF NOT EXISTS sku(name string);

然后在 sku_graph 图空间中,创建一个 sku 标签的节点:

USE sku_graph; INSERT VERTEX sku(name) VALUES "唯一键": ("AM0001");

查询节点时,需要指定标签并根据属性值进行查询。如果仅知道值(如 AM0001 )而不确定标签,需要name 属性所在的 tag-sku 创建个索引,但相对于指定标签的话会更耗时,或者事先获取该节点的唯一 ID,再用 ID 查询节点信息。

match (v) where properties(v).name == "AM0001" return v

这是我当前了解到的,nubula并不能像neo4j那么直观地查询获取到?当前的需求对于查询效率追求非常高,不然影响用户体验,有没有推荐的方案呢?

为什么不把 AM0001 做为 VID?如果考虑查询效率的话。
如果是因为 AM0001 不是唯一键的话,那 neo4j 考虑如何处理呢?

1.本质上这种确实都是唯一键,但考虑到像类似商品分类多语言,像德语、日语等,把它们当成唯一键会显得很怪异;
2.之前理解上有偏差,以为neo4j不需要建索引就可以直接找到对应的,目前看也是需要在对应的属性建索引

嗯嗯,那做成属性也可以