【问题标题】:MYSQL - MATCH AGAINST score value = 0 but is >0 in WHERE clauseMYSQL - MATCH AGAINST 得分值 = 0 但在 WHERE 子句中 > 0
【发布时间】:2018-11-14 22:28:50
【问题描述】:

我有 2 个类似的数据库,在 2 个服务器上。
如果我尝试一个一个地执行这个请求:

SELECT u.lastname, MATCH (u.lastname) AGAINST ('Rod*' IN BOOLEAN MODE)
FROM user u
WHERE MATCH (u.lastname) AGAINST ('Rod*' IN BOOLEAN MODE) > 0 ;

在第一台服务器上,它给我一个数值作为比赛得分的结果。

一个第二个,我得到了相同的结果,所以真的应用了 where 子句,但分数总是 = 到 0。

你有什么想法吗?我猜它可能是mysql的一个特定的conf......但我不知道要检查哪个。

非常感谢

【问题讨论】:

  • 你绝对不应该在 select 和 where 中都匹配。
  • 这只是一个例子...如果我想知道他的价值,我需要选择 Match Against。这个请求导致我遇到同样的问题:SELECT u.lastname, MATCH (u.lastname) AGAINST ('Rod*' IN BOOLEAN MODE) as score FROM user u HAVING score > 0

标签: mysql full-text-search full-text-indexing match-against


【解决方案1】:

从派生表中选择:

SELECT lastname, score FROM (
SELECT u.lastname, MATCH (u.lastname) AGAINST ('Rod*' IN BOOLEAN MODE) AS score 
FROM user u 
) as derivedTable WHERE score <> 0 ORDER BY score DESC;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 2012-03-15
    • 2011-11-10
    相关资源
    最近更新 更多