全文索引 PREFIX 查询比普通索引 STARTS WITH 返回数据少很多

  • nebula 版本:v3.1.0
  • 部署方式:单机
  • 安装方式:Docker
  • 是否为线上版本: N
  • 硬件信息
    • 磁盘:SSD
    • CPU、4.8g,Ubantu20,i7
  • 问题的具体描述
    创建了同样的数据,不同的图空间,普通索引返回的数据量是全文索引的100倍左右
CREATE SPACE `test` (vid_type = FIXED_STRING(30)) ;
USE `test`;
CREATE TAG email(word string, name string, num int64);
CREATE TAG INDEX IF NOT EXISTS email_index ON email(name(30));
REBUILD TAG INDEX;
CREATE FULLTEXT TAG INDEX  `nebula_email_index` on `email`(`name`) 
REBUILD FULLTEXT index;

导入数据
email.csv (4.4 MB)
导入10万数据,show stats 只有 8万多条

es 显示显示的数据量也有区别

查询

LOOKUP ON email WHERE PREFIX(email.name, "email1") YIELD email.name;

创建一个没有全文索引的图空间

CREATE SPACE `test1` (vid_type = FIXED_STRING(30)) ;
USE `test1`;
CREATE TAG cemail(word string, name string, num int64);
CREATE TAG INDEX IF NOT EXISTS cemail_index ON cemail(name(30));
REBUILD TAG INDEX;

导入数据
email.csv (4.4 MB)

LOOKUP ON cemail WHERE cemail.name STARTS WITH "email1" YIELD cemail.name;

你创建的第二个space有show stats看看实际插入的数据量嘛? 可能两个space实际插入成功的数据量不一样. 你可以在同一个space下用全文索引和lookup starts with分别查下, 看看数据量一样不

1 个赞

但是好像也不至于差100倍…

两个不同的是图空间,show stats数据量是一样的

我这边返回是这样的,普通有5908条,全文索引是59条

普通索引

全文索引

你那边是否有这种情况?

1) REBUILD TAG INDEX; 和REBUILD FULLTEXT index; 之后show job看一眼,job是否都已经完成了

2)如果fulltext index rebuild完成了。数据还不一一样的话,麻烦找一下确实的数据,然后从es单独读下,看看还有没有

换了下uid,1-100000

nebula和es的统计数据对了,但是查询出来的还是有区别





是同一个space吗?

是的,,,

PREFIX(schema_name.prop_name, prefix_string, row_limit, timeout) 中的
row_limit:可选项。指定要返回的行数。默认值为100。

你调到足够大。试试

可以了,谢谢