Получение ТОЧНЫХ совпадений из полнотекстового поиска в первую очередь?

Я использую приведенный ниже код, например:

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-го результата. У тех, что впереди, тоже есть фраза, но есть и следующий за ней текст. Я проверил поля locn, gns, чтобы увидеть, как они сравниваются, и ничего особо не выделяется, что могло бы повысить оценку других.

Я кое-что читал об использовании BOOLEAN MODE, но ничто из того, что я там читал, казалось, не поможет моим потребностям.


person Brett    schedule 27.08.2011    source источник


Ответы (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;
person Brett    schedule 28.08.2011
comment
этот запрос спас мой день - person Ali Selcuk; 05.12.2016