Релевентный поиск с помощья mysgl-запроса. Строковые функции mysql, посчитать совпадения искомого в поле таблицы (текстовый поиск в таблице)

Расшифровываю заголовок сего сообщения:

У меня уже есть и отлично работает поиск (и в постах и в комментах). Релевантный поиск в постах тоже реализован и работает, но реализовано оно через одно место. При выводе результатов обычного поиска в постах, по умолчанию посты выводятся от новый к старым. Возможность сортировки пользователем имеется. В самом запросе они сортируются по pid - PostId.

Поиск в ПОЛЕ таблицы постов осуществляется по такому шаблончику SS, %SS, SS%/, %SS%.

SS - это строка для поиска.

Вот запрос (на самом деле он более сложный. в таблице есть параметры доступа к посту и всякие джоины, но это к теме не относится. Зачем перегружать излишками):

    $q = "select pid,title_posts,txt_posts,postpic_posts from posts where 
                lower(txt_posts) like lower(?) or 
                lower(txt_posts) like lower(?) or 
                lower(txt_posts) like lower(?) or 
                lower(txt_posts) like lower(?)
                order by pid $asc_desc limit ? offset ?";

Вместо lower(txt_posts) like lower(?) и подставляются (привязываются) SS, %SS, SS%/, %SS%.

Сортировка по pid - выше уже упоминал об этом. Что хочу?: Хочу чтобы в результате запроса к pid, title_posts, txt_posts, postpic_posts добавилось поле с количеством совпадений искомого. Нужно, например, получить такие результаты count_relev_ss, pid, title_posts, txt_posts, postpic_posts.

Ранее (когда он был бело-зеленый) на https://dev.mysql.com/doc/ было понятнее что где искать. А сейчас не вполне понятно. Да и простого ответа на мой вопрос там нет.

count_relev_ss нужен для сортировки по релевантности. Только как его посчитать?

Например:

    $q = "select pid,title_posts,txt_posts,postpic_posts from posts where 
                lower(txt_posts) like lower(?) or 
                lower(txt_posts) like lower(?) or 
                lower(txt_posts) like lower(?) or 
                lower(txt_posts) like lower(?)
                order by count_relev_ss $asc_desc limit ? offset ?";

Ответы (0 шт):