gpt4 book ai didi

mysql - 在 WHERE 子句中使用 FULLTEXT 搜索的相关性得分

转载 作者:行者123 更新时间:2023-11-29 11:40:42 24 4
gpt4 key购买 nike

我有一个简单的全文搜索查询:

SELECT *, MATCH(col1,col2,col3) AGAINST ('keywords' IN BOOLEAN MODE) AS relev FROM table1 ORDER BY relev DESC

这在技术上可行,但它也会返回相关性为 0 的结果。

我尝试使用:

SELECT *, MATCH(col1,col2,col3) AGAINST ('keywords' IN BOOLEAN MODE) AS relev FROM table1 WHERE relev > 0 ORDER BY relev DESC

但这告诉我 relev 是无效的列名称。

有没有办法排除 relev 为 0 的结果,而不必在 WHERE 中再次使用 MATCH(..) AGAINST(..) 子句?这样做基本上不会再次重复全文搜索并花费两倍的时间吗?

最佳答案

您可以使用 having 子句来代替:

SELECT t.*,
MATCH(col1, col2, col3) AGAINST ('keywords' IN BOOLEAN MODE) AS relev
FROM table1 t
HAVING relev > 0
ORDER BY relev DESC;

SQL(一般情况下)不允许在 WHERE 子句中使用列别名。然而,MySQL 允许它们出现在 HAVING 子句中(并非所有数据库都这样做)。这对于这样的情况很方便。

关于mysql - 在 WHERE 子句中使用 FULLTEXT 搜索的相关性得分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35830286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com