MySQL сортирует результаты по релевантности

Я пытаюсь отсортировать фильмы по их релевантности.

Вот необработанные результаты Myqsl Query.

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

Хорошо, результаты выглядят довольно хорошо, за исключением того, что там, где были повторяющиеся заголовки, они не отображались.

Любая идея, как исправить эту проблему??

2 ответа

Решение

Дубликат удаляется 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`

Для меня это звучит так, как будто вы захотите использовать функцию поиска на естественном языке в MySQL. Это позволит вам сопоставить критерии поиска по нескольким полям и автоматически отсортировать их по релевантности.

Смотрите эту ссылку для более подробной информации: http://dev.mysql.com/doc/refman/5.5/en/fulltext-natural-language.html

Другие вопросы по тегам