| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > реализовать поиск данных в БД |
| Автор: JohnOSTend 11.1.2009, 21:59 |
| Люди, помогите реализовать поиск по БД. Допустим искать надо в поле text... у меня получилось только это: $memo = mysql_query("SELECT id,title,description FROM data WHERE MATCH(text) AGAINST('$search')",$db); И если я буду искать например "бумага", то он найдет только "бумага". А "Бумага", "БУМАГА" или "бумажный","Бумажный" не находит. Я прикрепил файл со скриншотом, на котором я искал слово "поиск" и он нашел "поиска" и при этом при этом найденое слово посик выделено желтым цветом. Как сделать такой поиск?? Помогите плз! И если я что-то не указал, пишите, я добавлю. http://pic.ipicture.ru/uploads/090111/HaPQPgkbeM.gif |
| Автор: ksnk 12.1.2009, 00:41 |
| JohnOSTend, Индекс в таблице полнотекстовый? Видимо нет, иначе был бы не важен регистр символов. А вот чтобы он по "бумаге" искал "бумажный" - его надо учить русскому языку... Хотя -- можно поискать в гугле тему "эвристическое, без словаря. извлечение корня" (это где-то на dklab-е), и передрать алгоритм. Алгоритм иногда ошибается -- можно прикупить где-нибудь "словарь словоформ русского языка". В результате фраза поиска трансформируется в набор словоформ, либо в набор корней слов, по которым уже и ищем. Вот, в общем-то и вся известная мне теория ... |
| Автор: skyboy 12.1.2009, 01:40 |
http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B5%D0%BC%D0%BC%D0%B8%D0%BD%D0%B3. не эвристическое(алгоритм жестко определен), не корня. но может прокатить. или словарь. т.е. приведение слов к некой "нормальной" форме(например, прилагательніе - к существительному, существительное - к единственному числу, именительному падежу и т.п.) впрочем, лучше ещё и навесить алгоритм http://www.google.com/search?hl=en&q=%D0%B2%D1%8B%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5+%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B2%D1%8B%D1%85+%D1%81%D0%BB%D0%BE%D0%B2&btnG=Search&lr=lang_en|lang_ru|lang_uk, ибо поиск по "и" или "далее" не пригодится ровно никому. |
| Автор: JohnOSTend 12.1.2009, 20:21 |
| Вы меня не совсем поняли, я не хочу все усложнять, хочу просто чтобы он искал слово "бумага" даже если оно будет примерно так записано блаблаблаБумАгАблаблабла и если я буду искать "бумага" он найдет мне блаблаблаБумАгАблаблабла, причем бумага выделит жирным шрифтом например. |
| Автор: awers 12.1.2009, 20:38 | ||
ну в mysql есть like где к примеру
|
| Автор: JohnOSTend 12.1.2009, 20:55 |
| Люди, не сочтите за наглость - но не могли бы вы составить код с пояснением по шагам. Я просто не очень врубаюсь в эти запросы. |
| Автор: awers 12.1.2009, 20:57 | ||||
кстати, не используя ранее посоветованные технологии
это так и останется. Добавлено через 1 минуту и 44 секунды
|
| Автор: serzhb 13.1.2009, 12:29 |
| Полнотекстовый поиск в MySQL оставляет желать лучшего. Можно конечно поизвращаться и довести до ума, но это отразиться на скорости работы. Лучше переходи на PostgreSQL, модуль tsearch2, там учёт русской морфологии имеется. |
| Автор: JohnOSTend 13.1.2009, 12:46 | ||
serzhb
Можно об этом по подробнее (я первый раз об этом слышу) |
| Автор: serzhb 13.1.2009, 12:54 | ||||
Подробнее надо гулить, статей на тему полно, например: http://www.citforum.ru/database/postgres/fts/ |
| Автор: JohnOSTend 14.1.2009, 19:25 |
| Жаль... прийдется самому решать данную задачу, тему можно закрывать. |