【问题标题】:mysql sort results by relevance case issuemysql 按相关案例问题对结果进行排序
【发布时间】:2013-12-18 12:51:42
【问题描述】:

我正在尝试根据电影的标题相关性对电影进行排序。

这里是原始的 Mysql 查询结果。

21126   A Frozen Flower 
4557    Cashback 
4504    Frozen 
36645   Frozen
509     Frozen Assets 
20649   Frozen Flesh 
24752   Frozen Kiss 
25675   Frozen Land 
4783    Frozen River 
11798   Frozen River 
11856   Frozen Scream
21755   Frozen Silence 
26333   Frozen Thrills 
8532    Frozen Water 
16196   God Don't Make the Laws 
6158    The Frozen Ground 
28160   The Thaw 
7320    Winter of Frozen Dreams

我正在使用的当前代码

SELECT * FROM `movies` 
    WHERE `Title` LIKE '%Frozen%' 
    OR `other_title` LIKE '%Frozen%'  

    GROUP BY `Title` ORDER BY CASE 
    WHEN `Title` = 'Frozen' THEN 0
    WHEN `Title` like 'Frozen%' THEN 1
    WHEN `Title` like '% %Frozen% %' THEN 2
    WHEN `Title` like '%Frozen' THEN 3
    ELSE 4
    END, `Title`

这是结果

4504    Frozen
509     Frozen Assets
20649   Frozen Flesh
24752   Frozen Kiss
25675   Frozen Land
4783    Frozen River
11856   Frozen Scream
21755   Frozen Silence
26333   Frozen Thrills
8532    Frozen Water
21126   A Frozen Flower
6158    The Frozen Ground
7320    Winter of Frozen Dreams
4557    Cashback
16196   God Don't Make the Laws
28160   The Thaw

Ok 结果看起来很不错,只是没有显示重复的标题。

任何想法如何解决这个问题??

【问题讨论】:

    标签: php mysql sorting relevance


    【解决方案1】:

    group by 正在删除重复项。只需删除它:

    SELECT *
    FROM `movies` 
    WHERE `Title` LIKE '%Frozen%' OR `other_title` LIKE '%Frozen%'  
    ORDER BY (CASE WHEN `Title` = 'Frozen' THEN 0
                   WHEN `Title` like 'Frozen%' THEN 1
                   WHEN `Title` like '% %Frozen% %' THEN 2
                   WHEN `Title` like '%Frozen' THEN 3
                   ELSE 4
              END), `Title`
    

    【讨论】:

      【解决方案2】:

      在我看来,您可能想在 MySQL 中使用自然语言搜索功能。这将允许您将搜索条件与多个字段进行匹配,并自动按相关性对它们进行排序。

      查看此链接了解更多详情:http://dev.mysql.com/doc/refman/5.5/en/fulltext-natural-language.html

      【讨论】:

        猜你喜欢
        • 2011-11-26
        • 2010-11-04
        • 1970-01-01
        • 2013-09-08
        • 2012-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-25
        相关资源
        最近更新 更多