Подскажите как реализовать поиск по таблице MySQL , что бы он грамотно искал как слова , так и фразы??
У меня и было написано с LIK'ами , таким образом: 1)Гетом приходит переменная , если она больше 3 символов заменяю все разделительные символы на пробелы и разделяю на массив по тем же пробелам. 2) Циклом пробегаю по массиву и если слово больше 5 символов с помощью phpMorphy получаю корень слова. 3) С помощью функции implode('%',$array) собираю всё обратно в строку 4)Подставляю в запрос select * from `table_name` where `content` like '$seach' or `name` like '$seach' or `about` like '$seach' Проблема в том что порой скрипт находит строки, в которых вообще нет вхождений подстроки
Мне кажеться это излишне. Составляй запрос динамически т.е. например строка поиска у тебя содержит 'мама, папа, я и бубен'. Делай из строки массив (explode), разделитель - запятая, потом в зависимости от количества элементов в массиве подставляй в запрос столько OR LIKE сколько нужно. Но это геморно. Посмотри в сторону библиотеки Котерова DbSimple. Там есть прекрасный механизм, который как раз тебе и нужен)
Лайки нужны все , я же не знаю в каком поле встретится вхождение.В библиотеке DbSimple ничего подходящего не нашёл , да и смысла из за одного некорректного запроса DbSimple использовать , всё остальное у меня замечательно работает. Мне кажеться тут какие-то траблы с кодировкой. Я сейчас через phpMyAdmin руками прям запрос вбил select * from `table_name` where `about` like '%фыва%' И он мне 4 строки нашёл , хотя ни в одной такого нет(