返回首页

gbase数据、南大通用产品文档:GBase8aNEAR 搜索函数

更新日期:2024年09月11日

语法格式
NEAR ((term1, term2), num[,Order])
表5- 46 参数说明
参数名称


term
为搜索词,
无论是否有引号标识,
都按照短语搜索,
如near((北
京,天津),10)等价于near(("北京","天津"),10),
term 也可以是一
个Near 表达式,两个term 用逗号分割。英文为词,中文默认
为单字。
NUM
表示词距数,非0 整数,词距(包括匹配词),实际词距小
于num 值即为符号要求
Order
表示词序。为0 代表无词序,
为1 代表有词序。
Order 为可
选项,默认值为0,表示无词序。
例如near((great, place), 3,1), 查找great 和place 两词词距不超过3,按词序查询。
1.
文本匹配条件描述

按照参数order 输入值:

0:无顺序包括所有查询词语;

非0 整数:有顺序包括所有查询词语。

匹配词词距不超出预期值(包括匹配词);

支持递归匹配,
每层递归结果均需要满足(1)(2)条件,
递归结果作为一个整体
传入下一次递归计算,其长度为匹配长度。
2.
搜索实例说明

输入查询语句“near((cat, dog), 5, 1)":

文本“cat dog”--- 匹配,词序正确;

文本“dog cat”--- 不匹配,dog cat 词序不匹配;

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
940

文本“cat aaa bbb ccc ddd dog”---不匹配,cat dog 之间有6 个词(包括匹配
词),超出匹配长度5。

输入查询语句“near((cat, dog), 5, 0)":

文本“cat dog”--- 匹配;

文本“dog cat”--- 匹配,无词序要求。

文本“dog aaa bbb ccc ddd cat”---不匹配,dog,cat 之间有6 个词(包括匹配
词),超出匹配长度5

输入查询语句"near( (near((cat, dog), 5, 1), mouse), 8, 0)"

文本“cat dog mouse”--- 匹配;

文本“mouse cat dog”--- 匹配;

文本“dog cat mouse”--- 不匹配,dog, cat 词序不匹配;

文本“cat aaa bbb ccc ddd dog mouse” ---不匹配,cat,dog 词距为6,超出匹
配长度5;

文本“cat aaa bbb ccc dog aaa bbb ccc ddd mouse”---不匹配,
cat, mouse 词距
为10 超出匹配长度8;

文本“cat aaa bbb ccc dog ddd
mouse”---匹配, cat 和dog 词距未超出,cat
和mouse 词距未超出;

文本“mouse ddd cat aaa bbb ccc dog”---匹配, cat 和dog 词距未超出,
mouse
和dog 词距未超出;
以上为句法讲解的例子,下面以实际的示例说明。
示例
示例1:要查询制作假文凭的垃圾短信内容。
gbase> SELECT MB_Text FROM sms WHERE contains(MB_Text, '"文
凭"/2');
+--------------------------------------------------------------+
| MB_Text
|
+--------------------------------------------------------------+
| 明天去公司办公柜里查找合同文件、档案和报销凭证。
|
| 本公司办理各种文*凭、证/件,绝对保真,联系电话:022-30088200。|
+--------------------------------------------------------------+
2 rows in set

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
941
从上面信息中发现正常的短信也查询出来了,我们改进一下查询方法。
gbase> SELECT MB_Text FROM sms WHERE contains(MB_Text, 'NEA
R((文,凭),4,1)');
+---------------------------------------------------------------+
| MB_Text
|
+---------------------------------------------------------------+
| 本公司办理各种文*凭、证/件,绝对保真,联系电话:022-30088200。|
+---------------------------------------------------------------+
1 row in set
示例2:查询包含南大两字,词距在4 的短信。
gbase> SELECT MB_Text FROM sms WHERE contains(MB_Text, '(NE
AR((南,大),4,0))');
+--------------------------------------------------------------+
| MB_Text
|
+--------------------------------------------------------------+
| 晚上去南大上英语课,在南大主楼115 房间
|
| 周末去天津博物馆参观,在南开区南门外大街公交车站集合
|
| 南大通用数据技术股份有限公司地址:...
|
| 南大开设java 编程培训班,每周五晚上7:00-9:00 上课
|
+--------------------------------------------------------------+
4 rows in set
示例3:想查询包含南大两字、词距在4 并且以课字结尾的短信。
gbase> SELECT MB_Text FROM sms WHERE contains(MB_Text,
'(NEAR((南,大),4,0))&课$');
+-----------------------------------------------------+
| MB_Text
|
+-----------------------------------------------------+
| 南大开设java 编程培训班,每周五晚上7:00-9:00 上课
|
+-----------------------------------------------------+
1 row in set

case
12/case
4
HSK
football

- 157 -

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 VI