我正在使用 Doris 的 FULLTEXT 搜索功能,配合 MATCH_ANY,并按照官方示例通过 score() 函数获取相关性得分。基本搜索可以正常工作,但我无法过滤掉相关性得分较低的记录——任何尝试都会触发语法错误,提示 score() 函数只能在 SELECT 子句中使用。
我想问一下:
- Doris 是否支持对 FULLTEXT 搜索结果进行低相关性得分的过滤?
- 如果支持,正确的 SQL 语法是什么(基于下面的官方示例)?
- 如果不支持,是否有替代方法(不涉及临时表等高性能开销)?
环境信息
- 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