版本 2.0GA
假设创建如何tag以及index:
CREATE TAG player(name string, age int);
CREATE TAG INDEX name ON player(name(20))
当插入数据name属性超过20个字符串时,使用lookup yiled player.name 时,只显示name的前20个字符串
版本 2.0GA
假设创建如何tag以及index:
CREATE TAG player(name string, age int);
CREATE TAG INDEX name ON player(name(20))
当插入数据name属性超过20个字符串时,使用lookup yiled player.name 时,只显示name的前20个字符串
20
有方法可以规避吗,业务插入数据时无法确定长度的
索引是定长的,但是返回的数据不应该是定长的,有什么使用的过程描述吗或者截图?
创建tag以及index如上图问题所示,
数据插入操作如下:
INSERT VERTEX player(name, age) VALUES
“Russell Westbrook”: (“Russell Westbrook”, 30),
“Chris Paul”: (“Chris Paul”, 33),
“Boris Diaw”: (“Boris Diaw”, 36),
“David West”: (“test1002gggggggggggwest”, 38),
“Danny Green”: (“Danny Green”, 31),
“Tim Duncan”: (“Tim Duncan”, 42),
“James Harden”: (“James Harden”, 29),
“Tony Parker”: (“Tony Parker”, 36),
“Aron Baynes”: (“Aron Baynes”, 32),
“Ben Simmons”: (“Ben Simmons”, 22),
“Blake Griffin”: (“Blake Griffin”, 30);
查看结果为,字符串被截断了
感谢反馈,应该是各 bug,返回的属性不应该被截断。我自己试了下,lookup 有截断,match 没有,你也可以试试 match。
(root@nebula) [sf30]>
(root@nebula) [sf30]> lookup on Person yield Person.lastName as name| limit 2
+----------+------+
| VertexID | name |
+----------+------+
| 296 | "Ga" |
+----------+------+
| 344 | "Ma" |
+----------+------+
Got 2 rows (time spent 853346/864492 us)
Mon, 19 Apr 2021 17:17:31 CST
(root@nebula) [sf30]> match (v:Person) return v.lastName | limit 2
+------------+
| v.lastName |
+------------+
| "Khan" |
+------------+
| "Muller" |
+------------+
Got 2 rows (time spent 8799672/8829865 us)
Mon, 19 Apr 2021 17:18:01 CST
(root@nebula) [sf30]> DESCRIBE tag index idx_person2
+------------+-------------------+
| Field | Type |
+------------+-------------------+
| "lastName" | "fixed_string(2)" |
+------------+-------------------+
Got 1 rows (time spent 2409/6062 us)
Mon, 19 Apr 2021 17:18:15 CST
你好,lookup中有做一个处理,如果where条件中的索引正好是yield的列就直接返回索引,所以你得到的是一个截断的属性,而match和fetch语句里没有做这个操作,所以能得到正确结果。
由于这块改动会对性能有较大影响,我们还需要内部评估一下 cc @bright-starry-sky @jude-zhu
目前有如下折中的方式:
lookup on player where player.name == "test1002gggggggggggwest" yield player.name, player.age
这时因为过滤条件和yield列不同,在根据索引找到点之后会再去获取点的数据而不是直接返回索引MATCH(v:player{name:"test1002gggggggggggwest"}) RETURN v
有后续讨论结果我们会在这里更新。
这个问题修复了吗? 如何修复的?