语法格式
该函数功能为全文检索对关键字的匹配程度所计算的分数,返回的值是全文查询
函数CONTAINS 查询结果的权重值,值的大小跟全文检索评估算法有关,权重
值越高则匹配度越高。GBase 8a MPP Cluster 全文检索的评估模式默认是BM25
算法,可以通过扩展选项"rank=tf"设置采用词频评估算法。
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
942
INT SCORE(N)
表5- 47 参数说明
参数名称
说
明
INT
返回值为INT 类型,该数值为与其SCORE 标号一致的全文
查询函数CONTAINS 查询结果权重,
N
SCORE 标号,整数类型, 该数值应与当前查询语句的Where
子句中某一全文查询CONTAINS 函数的SCORE 标号一致。
注意
SCORE 函数只能用于投影列、
GROUP BY 和ORDER BY 子句中,
否则报
错。
gbase> SELECT *
FROM t WHERE contains(a ,' 中国',0) AND
score(0) >10;
ERROR 1149 (42000): score function can ONLY in SELECT, GROUP BY or
ORDER BY clause
如果没有与其SCORE 标号一致的全文查询函数CONTAINS,则报出错误
信息:
gbase> SELECT score(1) a1 FROM t WHERE contains(a ,'中国',0);
ERROR 1149 (42000): not match the number of score func
如果多个CONTAINS 函数的SCORE 标号均与其一致,则报出错误信息:
gbase> SELECT score(0) FROM t WHERE contains(b, 'abc' , 0) AND
contains(b, 'bcb' , 0);
ERROR 1210 (HY000): Incorrect arguments to CONTAINS FUNCTION -
SCORE FLAG COLLISION
示例
示例1:查询包含“南大”词组的短信并且按照score 分值倒排序。示例中第1 行
数据中权重值跟其他两行相比要高,因为第1 行查询“南大”命中了两次,其他
两行只命中了一次。
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
943
gbase> INSERT INTO sms VALUES(1,1,'晚上去南大上英语课,
在南大主楼
115 房间');
Query OK, 1 row affected
gbase> INSERT INTO sms VALUES (1,1,'南大通用数据技术有限公司地
址:天津花苑产业区海泰发展6 号海泰J 座');
Query OK, 1 row affected
gbase> INSERT INTO sms VALUES (1,1,'南大开设java 编程培训班,
每周
五晚上7:00-9:00 上课');
Query OK, 1 row affected
gbase> SELECT score(1) AS score, MB_Text FROM sms WHERE conta
ins(MB_Text, '"南大"',1) ORDER BY score DESC;
+-------+----------------------------------------------------+
| score | MB_Text
|
+-------+----------------------------------------------------+
|
1511 | 晚上去南大上英语课,在南大主楼115 房间
|
|
1508 | 南大通用数据技术股份有限公司地址:...
|
|
1508 | 南大开设java 编程培训班,每周五晚上7:00-9:00 上课|
+-------+----------------------------------------------------+
3 rows in set