概述
要使用全文检索功能,首先需要建立一个表存储数据源信息,将要查询的文本内
容放到数据表中,然后将查询的文本内容列创建全文索引,当表中有内容更新时
也要更新索引,这样就可使用全文检索查询语法进行查询。具体语法包括创建索
引,更改索引,更新索引,删除索引和查询等操作,下面就以手机短信息检索的
例子进行说明,快速了解全文检索的使用方法,具体语法说明请参考后面章节。
示例
示例1:创建一个存储短信信息的表sms,包括手机号和短信内容两个字段。
gbase> CREATE TABLE sms (MB_No char(11), MB_Text varchar(1000)
DEFAULT NULL);
Query OK, 0 rows affected
示例2:创建全文索引,索引名称:idx_t,索引列:MB_Text。
gbase> CREATE FULLTEXT index idx_t ON sms(MB_Text);
Query OK, 0 rows affected
Records: 0
Duplicates: 0
Warnings: 0
插入示例数据信息
INSERT INTO sms VALUES('13023315123','南大开设java 编程培训班,每
周五晚上7:00-9:00 上课');
INSERT INTO sms VALUES('13521000123','天津大学开设考研培训班,学
期3 个月,每周六、日上课,欢迎报名,咨询40088800');
INSERT INTO sms value('13023315123','晚上去南大上英语课,在南大主楼
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
908
115 房间');
INSERT INTO sms VALUES('13023315123','周末去天津博物馆参观,在南
开区南门外大街公交车站集合。');
INSERT INTO sms VALUES('13023300023','本公司负责办理各种文*凭、
证
/件,绝对保真,电话联系:022-30088200。');
INSERT INTO sms VALUES('13023300023','明天去公司办公柜里查找合同
文件、档案和报销凭证。');
INSERT INTO sms VALUES('13988213328','周六上午9 点去水上公园,在
东门集合,对着天津天塔');
INSERT INTO sms VALUES('13323315181','南大通用数据技术股份有限公
司地址:
天津华苑产业区海泰发展六道6 号海泰绿色产业基地J 座(300384)');
INSERT INTO sms VALUES('13521015341','本小学为6 到12 岁儿童开办语
文、数学和英语培训班');
示例3:手动更新索引
gbase> UPDATE INDEX idx_t ON sms;
Query OK, 9 rows affected
示例4:查询建立的索引(包括全文索引)
gbase> SHOW INDEX FROM sms;
因为结果集列数较多,分为多行显示
+-------+------------+----------+--------------+-------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name |
+-------+------------+----------+--------------+-------------+
| sms
|
1 | idx_t
|
1 | MB_Text
|
+-------+------------+----------+--------------+-------------+
+-----------+-------------+----------+--------+
| Collation | Cardinality | Sub_part | Packed |
+-----------+-------------+----------+--------+
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
909
| NULL
|
NULL |
NULL | NULL
|
+-----------+-------------+----------+--------+
+------+------------+---------+
| Null | Index_type | Comment |
+------+------------+---------+
| YES
|
FULLTEXT
|
|
+------+------------+---------+
1 rows in set
示例5:搜索查询
gbase> SELECT COUNT(*) FROM sms WHERE contains(MB_Text, '南大通
用');
+----------+
| COUNT(*) |
+----------+
|
1 |
+----------+
1 row in set
示例6:查询包括天津或者培训班文字、并且不包含“水上”文字的数据条数:
gbase> SELECT COUNT(*) FROM sms WHERE contains(MB_Text, '"天津"
| "培训班" - "水上"');
+----------+
| COUNT(*) |
+----------+
|
5 |
+----------+
1 row in set
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
910
示例7:想具体查看一下135 开头的手机号收到的包括天津或者培训班词组、并
且不包含“水上”词组的短信内容:
gbase> SELECT LEFT(MB_Text,30) FROM sms WHERE
contains(MB_Text, '("天津" | "培训班") - "水上"') AND MB_No like '135%';
+--------------------------------------------------------------+
| LEFT(MB_Text,30)
|
+--------------------------------------------------------------+
| 本小学为6 到12 岁儿童开办语文、数学和英语培训班
|
| 天津大学开设考研培训班,学期3 个月,每周六、日上课,欢迎报名|
+--------------------------------------------------------------+
2 rows in set
示例8:搜索以南大词组开头的短信内容:
gbase> SELECT * FROM sms WHERE contains(MB_Text, '^"南大"');
+-------------+-----------------------------------------------------------------------------------
-------------------------------------------------+
| MB_No
| MB_Text
|
+-------------+-----------------------------------------------------------------------------------
-------------------------------------------------+
| 13023315123 | 南大开设java 编程培训班,每周五晚上7:00-9:00 上课
|
| 13323315181 | 南大通用数据技术股份有限公司地址:天津华苑产业区海泰
发展六道6 号海泰绿色产业基地J 座(300384)
|
+-------------+-----------------------------------------------------------------------------------
-------------------------------------------------+
2 rows in set
示例9:要查询制作假文凭的垃圾短信内容:
gbase> SELECT MB_Text FROM sms WHERE contains(MB_Text, '"文凭
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
911
"/2');
+--------------------------------------------------------------+
| MB_Text
|
+--------------------------------------------------------------+
| 明天去公司办公柜里查找合同文件、档案和报销凭证。
|
| 本公司办理各种文*凭、证/件,绝对保真,联系电话:022-30088200。|
+--------------------------------------------------------------+
2 rows in set
示例10:从上面信息中发现正常的短信也查询出来了,修改查询语句为:
gbase> SELECT MB_Text FROM sms WHERE contains(MB_Text,
'NEAR((文,凭),4,1)');
+--------------------------------------------------------------+
| MB_Text
|
+--------------------------------------------------------------+
| 本公司办理各种文*凭、证/件,绝对保真,联系电话:022-30088200。|
+--------------------------------------------------------------+
1 row in set
示例11:查询包含“南大”词组的短信并且按照no 倒排序。
gbase> SELECT MB_No AS no,MB_Text FROM sms WHERE
contains(MB_Text, '"南大"',1) ORDER BY no DESC;
+-------------+------------------------------------------------------------------+
| no
| MB_Text
|
+-------------+------------------------------------------------------------------+
| 13323315181 | 南大通用数据技术股份有限公司地址:天津华苑产业区海泰
发展六道6 号海泰绿色产业基地J 座(300384)
|
| 13023315123 | 晚上去南大上英语课,在南大主楼115 房间
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
912
|
| 13023315123 | 南大开设java 编程培训班,每周五晚上7:00-9:00 上课
|
+-------------+------------------------------------------------------------------+
3 rows in set