Задавайте вопросы, мы ответим
Вы не зашли.
Уважаемые господа,
прошу помочь мне со следующей проблемой. Имеется база данных с 5 таблицами. Имеется форма поиска по базе данных, в которой пользователь задает несколько параметров поиска (например, интервал дат занесения записей). Кроме того, на форме поиска записей имеется строка поиска в которую пользователь может вводить либо поисковое слово целиком либо его часть. При этом поиск введенного в поисковую строку слова должна производиться по нескольким полям таблицы (например, запись состоит из 12 полей, проверяться на совпадения дожны 10 из 12 полей).
Я создал полнотекстовые индексы и проверяю сейчас на совпадения конструкцией match...against, про которую здесь уже много написано. Получается так, что части слова она ищет некорректно (выводит также левые записи, которые не нужно) или не ищет вообще. Сейчас я хотел бы найти решение без match...against, но пока кроме
SELECT * from table where pole_1 like "%строка_поиска%" OR pole_2 like "%строка_поиска%" и т.д. все 10 полей,
ничего в голову не идет.
Может быть, кто-то предложит решение поэффективнее с высоты своего опыта в mySQL? Я пока еще не очень опытный пользователь.
Конфигурация: Windows server 2003 + PHP 4.0.4 + mySQL 4.0.18
Заранее благодарю всех за оказанную помощь.
Неактивен
Например:
SELECT * from table where CONCAT(pole_1, ' ', pole_2) like "%строка_поиска%"
Полнотекстовый индекс по-русски не всегда корректно работает. Если Вы хотите профессиональный поиск, индексируйте сами и сами потом ищите по ключевым словам. Например http://www.habrahabr.ru/blog/webdev/24953.html
Неактивен
Спасибо огромное за оперативность - очень рад, что нашел такой форум. Попробую запрос с CONCAT
Неактивен