Реализация релевантности в MySQL InnoDB

6 Ноя
2009

Нашел седня интересный выход на тему релевантности в таблицах не MyISAM в MySQL.
Запрос реализует выборку количества вхождений подстроки в строку.

Вообщем вот такой вот простенький запросик:

select *,
       (length(lower(title)) - length(replace (lower(title), 'sql', ''))) /
        length('sql') title_i,
       (length(lower(body)) - length(replace (lower(body), 'sql', ''))) / length
       ('sql') body_i
from articles
order by title_i desc,
         body_i desc

Логика этой байды собственно такая.. берем длинну строки в которой ищем отнимаем от нее длинну этой же строки но из которой удалено искомое слово и делем на длинну искомого слова. В итоге получаем количество вхождений данного слова в строку

Оставить комментарий

Вы должны войти, что бы оставить комментарий.

Наверх