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

小麦喙

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

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是无效的列名。

有什么方法可以排除arelev结果而不必MATCH(..) AGAINST(..)WHERE子句中再次使用吗?这样做基本上不会再次重复全文搜索并花费两倍的时间吗?

戈登·利诺夫

您可以改用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子句中使用它们(并非所有数据库都允许)。对于这种情况,这可能很方便。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SOLR搜索按相关性得分筛选

来自分类Dev

MySQL-具有部分单词匹配和相关性分数(FULLTEXT)的高效搜索

来自分类Dev

如何在弹性搜索中通过文本字段的长度修改相关性得分?

来自分类Dev

在 Feathersjs 中使用 Winston 显示相关性 ID

来自分类Dev

在“ where”子句中使用新列

来自分类Dev

在UPDATE语句中使用WHERE子句

来自分类Dev

SQL查询:在WHERE子句中使用AND / OR

来自分类Dev

括号在where子句中使用

来自分类Dev

在WHERE子句中使用枚举的FlexibleSearch

来自分类Dev

在where子句中使用cassandra的ttl()

来自分类Dev

在Where子句中使用GetValue

来自分类Dev

在where子句中使用case语句

来自分类Dev

在“ where”子句中使用新列

来自分类Dev

在WHERE子句中使用Count值

来自分类Dev

在日期的where子句中使用案例

来自分类Dev

在Where子句中使用Mysql变量

来自分类Dev

在select语句中使用WHERE子句

来自分类Dev

在LINQ Where子句中使用GetProperties()

来自分类Dev

在WHERE子句中使用NOT LIKE

来自分类Dev

在where子句中使用别名-SQL

来自分类Dev

在MYSQLI where子句中使用日期

来自分类Dev

在Oracle的Where子句中使用案例

来自分类Dev

在Spark SQL的'WHERE'子句中使用'as'

来自分类Dev

MYSQL在WHERE子句中使用别名

来自分类Dev

在 WHERE 子句中使用 NULL

来自分类Dev

在 WHERE 子句中使用 MySQL 变量

来自分类Dev

if else 在 mysql where 子句中使用

来自分类Dev

在 WHERE 子句中使用 DIFFERENCE

来自分类Dev

相同匹配项的不同Cloudsearch相关性得分