【问题标题】:Getting EXACT matches from full-text search returned first?从首先返回的全文搜索中获取精确匹配?
【发布时间】:2011-11-05 06:47:12
【问题描述】:

我正在使用下面的代码,例如:

SELECT *, (MATCH (`wm`, `locn`, `gns`) AGAINST('foot locker')) AS score FROM `example_table` WHERE MATCH (`wm`, `locn`, `gns`) AGAINST('foot locker')) order by score DESC;

然而,即使在wm 列中存在精确匹配,精确匹配直到第 8 个结果才会出现。前面的也都有这句话,还有一些后面的文字。我检查了locngns 字段以查看它们的比较情况,没有什么真正突出的可以使其他字段得分更高。

我阅读了一些关于使用 BOOLEAN MODE 的信息,但我在那里阅读的内容似乎都没有帮助我的需求。

【问题讨论】:

    标签: mysql full-text-search relevance


    【解决方案1】:

    好的,如果这对其他人有帮助,我可以通过这样做来实现我想要的:

    SELECT *, 
      CASE WHEN wm = 'foot locker' THEN 1 ELSE 0 END AS score, 
      MATCH (`wm`, `locn`, `gns`) AGAINST('foot locker') AS score2 
    FROM 
      `example_table` 
    WHERE 
      MATCH (`wm`, `locn`, `gns`) AGAINST('foot locker')) 
    ORDER BY
      score DESC, score2 DESC;
    

    【讨论】:

    • 这个查询拯救了我的一天
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多