当前有个需求场景,用户输入问题,通过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那么直观地查询获取到?当前的需求对于查询效率追求非常高,不然影响用户体验,有没有推荐的方案呢?