如何过滤全文搜索中相关性得分较低的结果(score() 函数引发语法错误)

Viewed 5

我正在使用 Doris 的 FULLTEXT 搜索功能,配合 MATCH_ANY,并按照官方示例通过 score() 函数获取相关性得分。基本搜索可以正常工作,但我无法过滤掉相关性得分较低的记录——任何尝试都会触发语法错误,提示 score() 函数只能在 SELECT 子句中使用。

我想问一下:

  1. Doris 是否支持对 FULLTEXT 搜索结果进行低相关性得分的过滤?
  2. 如果支持,正确的 SQL 语法是什么(基于下面的官方示例)?
  3. 如果不支持,是否有替代方法(不涉及临时表等高性能开销)?

环境信息

  • Doris 版本:[执行 SELECT VERSION(); 的输出:4.0.1]

我尝试使用以下 SQL 过滤相关性得分大于 5 的记录(确保 score() 只出现在子查询的 SELECT 子句中):

SELECT a.* FROM (
SELECT *, score() AS relevance
FROM search_demo
WHERE content MATCH_ANY '检索测试'
) a WHERE a.relevance > 5 ORDER BY a.relevance DESC LIMIT 10;

遇到的确切错误信息

SQL 错误 [1105] [HY000]: errCode = 2, detailMessage = score() function can only be used in SELECT clause, not in WHERE clause

0 Answers