nebula-studio自带数据集查询的问题

nebula-graph版本:nebula-graph-3.3.0.el8.x86_64.rpm
nebula-studio版本:nebula-graph-studio-3.5.0.x86_64.rpm
数据集:nebula-studio自带的demo-basketballplayer数据集

在根据文档中尝试查询时发现,根据MATCH (v:player{name:“Tim Duncan”})-[e]->(v2) RETURN *; 查询时,只有两条记录返回,均为follow的关系,无serve关系(已建立索引,并且rebuild)
但根据MATCH ()<-[e]-() RETURN e LIMIT 1000; 查询结果看,确实节点player100(即Tim Duncan)和team204(即Spurs)没有建立关系。


进一步,根据MATCH (v:team{name:“Spurs”})<-[e:serve]-() RETURN e; 查询,又能查到player100和team204的联系,但是player100的节点属性里没有name(其他马刺队员均有name属性)

从F12中能看到,第一次exec请求中的match in,是有player100这个点的,但是接口返回的tables中,没有这个点,继而又发起了第二次exec请求,该请求语句是:GO FROM “player100” OVER * BIDIRECT yield edge as _edge
最终的结果就是player100和team204的serve关系查到了,但是player100节点缺失了name属性,猜想这可能是最刚开始问题的原因吧。不知道为什么会出现这样的结果,去官网的在线体验版nebula studio也试了,未出现本次描述的问题。

我不太确定你的数据集是自己有做什么改动,你用的是 studio v3.5.0 的欢迎页 demo 自动导入的话,目前我们没有在这个 demo 里添加 serve 相关的边的,所以你的数据是自己处理过的么

是的,将官网上下载的数据集里的edge_serve.xlsx在nebula-studio上导入了一遍。

你单独查询 match (v) where id(v) == ‘player100’ return v 数据是否正常呢

match (v) where id(v) == ‘player100’ return v
单独执行,数据是正常的。

复现了,我看看是什么原因

初步来看,因为官网数据集里 edge_follow 文件里的 player100 前缀带有一个 unicode 码为 65279 的零宽空格,导致内核存边的时候也存进去了,所以在查询点详细信息时候查不到数据,看了下数据集文件的格式,发现也有一点差别,具体是不是这个原因还需要跟进。不过整体上,应该就是这个空格导致查不到数据的。我用的 mac 把 edge_serve 文件另存为导出另一份文件,重新导入就没这个问题了,你也可以试试
image

2 个赞

我昨天发现好像 importer 处理点和边的时候,strip 的策略不同,忙着别的就没验证,是不是这里的字符在点里被 importer 模块 strip 掉了,但是边没strip?

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。