提问参考模版:
- nebula 版本:2.0.1
- 部署方式(分布式 / 单机 / Docker / DBaaS):分布式
- 是否为线上版本:N
- 硬件信息
- 磁盘 ssd
- CPU、内存信息 16核 内存520G
- 问题的具体描述
- 相关的 meta / storage / graph info 日志信息
数据量在1.8W
1.不使用函数查询
match(v:tag1) where v.name==‘3760’ return v
使用函数
match(v:tag1) where toUpper(v.name)==‘3760’ return v
2.我在tag中创建t1,t2,t3的复合函数,
使用==查询,t1、t2;t1、t3任意组合都可以,只要满足左匹配;
如果使用函数,比如substr(t1,0,2)==‘01’ and t2==‘小明’,提示索引不存在
这个是什么原因,函数没有代入索引这块?
这是因为当函数的时候,这个filter没有推到storage那里,所以是把tag1的数据捞到graphd再做filter。
但是直接用属性比较的时候,是推到storaged,所以只会拿到符合条件的filter的数据,数据量就少了很多了。所以时间就少了。
函数好像只能放在条件最后使用,不代入索引,后面有没有考虑支持函数上面可以支持索引,还有如果需要从字符串第一个开始返回,该怎么处理,文档最小从第2个开始
这个我记录下需求
还有如果需要从字符串第一个开始返回,该怎么处理
你这里的第一个返回是什么意思,比如字符串 “abcd” , 你希望返回 “a” 还是 “b” 开始的字符,索引0表示的就是第一个字符。文档已经写的很清楚了。但是你的结果很奇怪,出来的怎么不是长度为3的字符串。你执行下 yield substr("abcd", 0, 3)
截下图
文档最小从第2个开始
哪里看到这个说法了?截图
pandap
10
substr函数说明,是有BUG还是不支持从0开始截取字符串
支持呀,substr(string a, int pos, int count) 和 substr(string a, int pos) 都是可以的,后者pos为0的时候,就是取整个字符串,前者pos 为0,就是从第一个开始截 count 长度的字符串
pandap
12
我测试pos为0,count不管为几都是全部字符串,条件里面用substr也一样,是不是个BUG
是 bug 呀,所以我上面让你执行下 yield substr("abcd", 0, 3)
结果截图。
你确定你用的是2.0.1的版本吗?这个版本已经修复的了