最近学习Gbase 8a MPP的全文索引功能,看到其中使用了SCORE函数,有人能详细介绍一下这个函数的具体功能吗
1条回答 默认 最新
- twinking star 2021-12-06 18:04关注
语法格式:
该函数功能为全文检索对关键字的匹配程度所计算的分数,返回的值是全文查询函数 CONTAINS 查询结果的权重值,值的大小跟全文检索评估算法有关,权重值越高则匹配度越高。GBase 8a MPP Cluster 全文检索的评估模式默认是 BM25算法,可以通过扩展选项"rank=tf"设置采用词频评估算法。
INT SCORE(N)
参数名称说明
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> INSERT INTO sms VALUES(1,1,'晚上去南大上英语课,在南大主楼 1
15 房间');
Query OK, 1 row affected本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报