返回首页

gbase数据、南大通用产品文档:GBase8screate tempdbspace 参数:创建临时 dbspace(SQL 管理 API)

更新日期:2024年09月11日

.................. - 724 -

概述
要使用全文检索功能,首先需要建立一个表存储数据源信息,将要查询的文章内容
放到数据表中,然后将查询的文本内容列创建全文索引,当表中有内容更新时也要
更新索引,这样就可使用全文检索查询语法进行查询。具体语法包括创建索引,更
改索引,更新索引,删除索引和查询等操作,下面就以手机短信息检索的例子进行
说明,快速了解全文检索的使用方法,具体语法说明请参考后面章节。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 920
示例

创建一个存储短信信息的表sms,包括手机号和短信内容两个字段。
gbase> CREATE TABLE sms (MB_No char(11), MB_Text varchar(1000) DEFAULT NULL);
Query OK, 0 rows affected

创建全文索引,索引名称: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','晚上去南大上英语课,在南大主楼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 岁儿童开办语文、数学和英语
培训班');

手动更新索引
gbase> UPDATE INDEX idx_t ON sms;

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 921
Query OK, 9 rows affected

查询建立的索引(包括全文索引)
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 |
+-----------+-------------+----------+--------+
| NULL | NULL | NULL | NULL |
+-----------+-------------+----------+--------+

+------+------------+---------+
| Null | Index_type | Comment |
+------+------------+---------+
| YES | FULLTEXT | |
+------+------------+---------+
1 rows in set

搜索查询
gbase> SELECT COUNT(*) FROM sms WHERE contains(MB_Text, '南大通用');
+----------+
| COUNT(*) |

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 922
+----------+
| 1 |
+----------+
1 row in set
查询包括天津或者培训班文字、并且不包含“水上”文字的数据条数:
gbase> SELECT COUNT(*) FROM sms WHERE contains(MB_Text, '"天津" | "培训班" - "
水上"');
+----------+
| COUNT(*) |
+----------+
| 5 |
+----------+
1 row in set
想具体查看一下135 打头的手机号收到的包括天津或者培训班词组、
并且不包
含“水上”词组的短信内容:
gbase> SELECT LEFT(MB_Text,30) FROM sms WHERE contains(MB_Text, '("天津" | "
培训班") - "水上"') AND MB_No like '135%';
+--------------------------------------------------------------+
| LEFT(text,30) |
+--------------------------------------------------------------+
| 本小学为6 到12 岁儿童开办语文、数学和英语培训班 |
| 天津大学开设考研培训班,学期3 个月,每周六、日上课,欢迎报名 |
+--------------------------------------------------------------+
2 rows in set
搜索以南大词组开头的短信内容:
gbase> SELECT * FROM sms WHERE contains(MB_Text, '^"南大"');
+-------------+--------------------------------------------+

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 923
| no | text |
+-------------+--------------------------------------------+
| 13023315123 | 南大开设java 编程培训班 |
| 13323315181 | 南大通用数据技术股份有限公司 |
+-------------+--------------------------------------------+
2 row in set
要查询制作假文凭的垃圾短信内容:
gbase> SELECT MB_Text FROM sms WHERE contains(MB_Text, '"文凭"/2');
+--------------------------------------------------------------+
| text |
+--------------------------------------------------------------+
| 明天去公司办公柜里查找合同文件、档案和报销凭证。 |
| 本公司办理各种文*凭、证/件,绝对保真,联系电话:022-30088200。|
+--------------------------------------------------------------+
2 rows in set
从上面信息中发现正常的短信也查询出来了,修改查询语句为:
gbase> SELECT MB_Text FROM sms WHERE contains(MB_Text, 'NEAR((文,凭),4,1)');
+--------------------------------------------------------------+
| text |
+--------------------------------------------------------------+
| 本公司办理各种文*凭、证/件,绝对保真,联系电话:022-30088200。|
+--------------------------------------------------------------+
1 row in set
查询包含“南大”词组的短信并且按照score 分值倒排序:
gbase> SELECT score(1) AS score,MB_Text FROM sms WHERE contains(MB_Text, '"南大
"',1) ORDER BY score DESC;

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 924
+-------+---------------------------------------------------+
| score | text |
+-------+---------------------------------------------------+
| 1511 | 晚上去南大上英语课,在南大主楼115 房间
|
| 1508 | 南大通用数据技术股份有限公司地址:...
|
| 1508 | 南大开设java 编程培训班,每周五晚上7:00-9:00 上课 |
+-------+---------------------------------------------------+
3 rows in set

com.gbasedbt.lang.IntervalDF 类允许您操纵间隔。
IntervalDF 构造函数
定义的缺省构造函数如下:
public IntervalDF() throws SQLException
如果抛出异常,请使用缺省构造函数的第二个版本,来显示本地化的错误消息:
public IntervalDF(Connection conn) throws SQLException
请使用下列构造函数,来创建来自特定的输入值的间隔:

两个时间戳 t1 和 t2,返回等于 t1 - t2 的 IntervalDF 值:
public IntervalDF(Timestamp t1, Timestamp t2)
throws SQLException

public IntervalDF(Timestamp t1, Timestamp t2, Connection conn)
throws SQLException
第二个版本允许您支持本地化的错误消息。

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 116
-

秒和纳秒数(将大型秒值转换为分、小时或天):
public IntervalDF(long seconds, long nanos)
throws SQLException

public IntervalDF(long seconds, long nanos, Connection
conn)
throws SQLException

第二个版本允许您支持本地化的错误消息。

秒数、纳秒数和限定符:
public IntervalDF(long seconds, long nanos, short qualifier)
throws SQLException

public IntervalDF(long seconds, long nanos, short
qualifier, Connection conn)
throws SQLException

要指定限定符,可使用 Interval 方法 中描述的 getQualifier() 方法。第二个版本允许
您支持本地化的错误消息。

字符串:
public IntervalDF(String string)
throws SQLException
public IntervalDF(String string, Connection conn)
throws SQLException
第二个版本允许您支持本地化的错误消息。
当使用这些构造函数时,将缺省的限定符设置为下列值:
领头的字段精度:2 开始代码:TU_DAY 结束代码:TU_F5
要获取关于字符串 INTERVAL 格式的信息,
请参阅
《GBase 8s SQL 指南:
语法》


字符串和限定符:
public IntervalDF(String string, short qualifier)
throws SQLException

public IntervalDF(String string, short
qualifier, Connection conn)
throws SQLException

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 117
-
要指定限定符,可使用 Interval 方法 中描述的 getQualifier() 方法。第二个版本允许
您支持本地化的错误消息。

字符串和限定符信息:
public IntervalDF(String string, int length, byte startcode, byte endcode)
throws SQLException

public IntervalDF(String string, int
length, byte startcode,
byte endcode, Connection conn)
throws SQLException
第二个版本允许您支持本地化的错误消息。

IntervalDF 方法
下列方法允许您操纵间隔。(您还可使用 Interval 方法,如前描述。)您可执行的任务和可
使用的方法如下:

比较两个间隔:
boolean equals(Object other)
boolean greaterThan(IntervalDF other)
boolean lessThan(IntervalDF other)

从其设置间隔的值:

字符串:
void fromString(String other)
void set(String string)

秒和纳秒值(将大型秒值转换为分钟、小时或天):
void set(long seconds, long nanos)

两个时间戳:
void set(Timestamp t1, Timestamp t2)

从长度、开始代码和结束代码设置限定符:
void setQualifier(int length, byte startcode, byte endcode)

取得间隔中的纳秒数:
long getNanoSeconds()

取得间隔中的秒数:
long getSeconds()

以格式 ddddd hh:mm:ss.nano 创建间隔的字符串表示:

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 118
-
String toString()
字段显示依赖于限定符。以空格替代开头的零。