ADB支持通过SQL定义全文检索列实现全文检索功能, 全文检索列由多值列实现,分词器类型为nlp_tokenizer。
说明 全文检索不同于SQL中的like,全文检索是在SQL中通过分词搜索匹配;like是模糊匹配,只需要为字符串列创建索引即可。
创建表
通过以下SQL创建TEST3表,定义text列为多值列类型,分词器类型为nlp_tokenizer。
CREATE TABLE test3 (
user_id BIGINT,
city VARCHAR,
text MULTIVALUE nlp_tokenizer 'ik' value_type 'varchar'
)
DISTRIBUTE BY HASH (user_id)
写入数据
通过以下SQL向TEST3表中写入测试数据。
insert into test3 values(1, 'HZ', '中华人民共和国');
insert into test3 values(2, 'BJ', 'AnalyticDB3.0是全新一代OLAP数据库');
insert into test3 values(3, 'SH', 'hello, world');
select * from test3 order by user_id;
+---------+------+--------------------------------+
| user_id | city | text |
+---------+------+------------------------------- +
| 1 | HZ |中华人民共和国 |
| 2 | BJ |AnalyticDB3.0是全新一代OLAP数据库|
| 3 | SH | hello, world |
检索查询
说明 全文检索中,默认将所有大写字母统一转换成小写字母。
select * from test3 where text in ('中华', '数据库');
+---------+------+--------------------------------+
| user_id | city | text |
+---------+------+--------------------------------+
| 1 | HZ | 中华人民共和国 |
| 2 | BJ | AnalyticDB3.0是全新一代OLAP数据库|
select * from test3 where text in ('hello') and city != 'HZ';
+---------+------+--------------+
| user_id | city | text |
+---------+------+--------------+
| 3 | SH | hello, world |
select * from test3 where ref(text,0) in ('analyticdb');
+---------+------+-----------------------------------+
| user_id | city | text |
+---------+------+-----------------------------------+
| 2 | BJ | AnalyticDB3.0是全新一代OLAP数据库 |
# 普通字符串列也可以进行like查询
mysql> select * from test3 where city like '%J%';
+---------+------+-----------------------------------+
| user_id | city | text |
+---------+------+-----------------------------------+
| 2 | BJ | AnalyticDB3.0是全新一代OLAP数据库 |
在文档使用中是否遇到以下问题
更多建议
匿名提交