Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> реализовать поиск данных в БД 
V
    Опции темы
JohnOSTend
  Дата 11.1.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 26.11.2008

Репутация: нет
Всего: нет



Люди, помогите реализовать поиск по БД.
Допустим искать надо в поле text... у меня получилось только это:
$memo = mysql_query("SELECT id,title,description FROM data WHERE MATCH(text) AGAINST('$search')",$db);
И если я буду искать например "бумага", то он найдет только "бумага". А "Бумага", "БУМАГА" или "бумажный","Бумажный" не находит.
Я прикрепил файл со скриншотом, на котором я искал слово "поиск" и он нашел "поиска" и при этом при этом найденое слово посик выделено желтым цветом.
Как сделать такой поиск?? Помогите плз!
И если я что-то не указал, пишите, я добавлю.
http://pic.ipicture.ru/uploads/090111/HaPQPgkbeM.gif
PM MAIL   Вверх
ksnk
Дата 12.1.2009, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



JohnOSTend, Индекс в таблице полнотекстовый? Видимо нет, иначе был бы не важен регистр символов.

А вот чтобы он по "бумаге" искал "бумажный" - его надо учить русскому языку...  smile Проще, imho, забить, пусть этим Гугель занимается...

Хотя
-- можно поискать в гугле тему "эвристическое, без словаря. извлечение корня" (это где-то на dklab-е), и передрать алгоритм. Алгоритм иногда ошибается  smile 
-- можно прикупить где-нибудь "словарь словоформ русского языка". 

В результате фраза поиска трансформируется в набор словоформ, либо в набор корней слов, по которым уже и ищем. Вот, в общем-то и вся известная мне теория  ...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
skyboy
Дата 12.1.2009, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(ksnk @  11.1.2009,  23:41 Найти цитируемый пост)
эвристическое, без словаря. извлечение корня

стемминг. не эвристическое(алгоритм жестко определен), не корня. но может прокатить.
или словарь. т.е. приведение слов к некой "нормальной" форме(например, прилагательніе - к существительному, существительное - к единственному числу, именительному падежу и т.п.)
впрочем, лучше ещё и навесить алгоритм выделения ключевых слов, ибо поиск по "и" или "далее" не пригодится ровно никому.

PM MAIL   Вверх
JohnOSTend
Дата 12.1.2009, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 26.11.2008

Репутация: нет
Всего: нет



Вы меня не совсем поняли, я не хочу все усложнять, хочу просто чтобы он искал слово "бумага" даже если оно будет примерно так записано
блаблаблаБумАгАблаблабла и если я буду искать "бумага" он найдет мне блаблаблаБумАгАблаблабла, причем бумага выделит жирным шрифтом например.

Это сообщение отредактировал(а) JohnOSTend - 12.1.2009, 20:22
PM MAIL   Вверх
awers
Дата 12.1.2009, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



ну в mysql есть like где к примеру

Код

select * from table where content LIKE '%бумага%'

PM MAIL WWW ICQ Skype   Вверх
JohnOSTend
Дата 12.1.2009, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 26.11.2008

Репутация: нет
Всего: нет



Люди, не сочтите за наглость - но не могли бы вы составить код с пояснением по шагам. Я просто не очень врубаюсь в эти запросы.
PM MAIL   Вверх
awers
Дата 12.1.2009, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



кстати, не используя ранее посоветованные технологии 
Цитата

И если я буду искать например "бумага", то он найдет только "бумага". А "Бумага", "БУМАГА" или "бумажный","Бумажный" не находит.

это так и останется.

Добавлено через 1 минуту и 44 секунды
Код

$memo = mysql_query("SELECT id,title,description FROM data WHERE text LIKE '%$search%' ",$db);

PM MAIL WWW ICQ Skype   Вверх
serzhb
Дата 13.1.2009, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.5.2007

Репутация: нет
Всего: нет



Полнотекстовый поиск в MySQL оставляет желать лучшего. Можно конечно поизвращаться и довести до ума, но это отразиться на скорости работы. Лучше переходи на PostgreSQL, модуль tsearch2, там учёт русской морфологии имеется.
PM MAIL   Вверх
JohnOSTend
Дата 13.1.2009, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 26.11.2008

Репутация: нет
Всего: нет



serzhb 
Цитата

Лучше переходи на PostgreSQL, модуль tsearch2, там учёт русской морфологии имеется.

Можно об этом по подробнее (я первый раз об этом слышу)
PM MAIL   Вверх
serzhb
Дата 13.1.2009, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.5.2007

Репутация: нет
Всего: нет



Цитата(JohnOSTend @ 13.1.2009,  12:46)
serzhb 
Цитата

Лучше переходи на PostgreSQL, модуль tsearch2, там учёт русской морфологии имеется.

Можно об этом по подробнее (я первый раз об этом слышу)

Подробнее надо гулить, статей на тему полно, например:
http://www.citforum.ru/database/postgres/fts/
PM MAIL   Вверх
JohnOSTend
Дата 14.1.2009, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 26.11.2008

Репутация: нет
Всего: нет



Жаль... прийдется самому решать данную задачу, тему можно закрывать.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1060 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.