返回首页

gbase数据、南大通用产品文档:GBase8a全文检索示例

更新日期:2024年09月11日

概述
要使用全文检索功能,首先需要建立一个表存储数据源信息,将要查询的文本内
容放到数据表中,然后将查询的文本内容列创建全文索引,当表中有内容更新时
也要更新索引,这样就可使用全文检索查询语法进行查询。具体语法包括创建索
引,更改索引,更新索引,删除索引和查询等操作,下面就以手机短信息检索的
例子进行说明,快速了解全文检索的使用方法,具体语法说明请参考后面章节。
示例
示例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-04-10)
南大通用数据技术股份有限公司
913
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-04-10)
南大通用数据技术股份有限公司
914
| 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-04-10)
南大通用数据技术股份有限公司
915
示例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-04-10)
南大通用数据技术股份有限公司
916
"/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-04-10)
南大通用数据技术股份有限公司
917
|
| 13023315123 | 南大开设java 编程培训班,每周五晚上7:00-9:00 上课
|
+-------------+------------------------------------------------------------------+
3 rows in set

参数说明:选项关闭状态下,连接消息日志只显示正在连接主机的IP 地址。打开此选
项同时可以记录主机名。由于解析主机名可能需要一定的时间,可能影响数据库的性能。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1284
该参数属于SIGHUP 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:布尔型

on 表示可以同时记录主机名。

off 表示不可以同时记录主机名。
默认值:on

得到各节点pg_catalog、
information_schema 以及pg_toast 模式中所有系统表的索引状态
信息。
名称
类型
描述
node_name
name
数据库进程名称。
relid
oid
这个索引的表的OID。
indexrelid
oid
索引的OID。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
968
名称
类型
描述
schemaname
name
索引中模式名。
relname
name
索引的表名。
indexrelnam
e
name
索引名。
idx_scan
bigint
索引上开始的索引扫描数。
idx_tup_read
bigint
通过索引上扫描返回的索引项数。
idx_tup_fetc
h
bigint
通过使用索引的简单索引扫描抓取的活表行数。