Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > поиск в БД


Автор: proger 5.12.2010, 16:41
Здравствуйте.
В БД есть поле тип - TEXT
На сайте есть форма поиска. Если пользователь ввел для поиска фразу (содержит более одного слова) то как искать в базе?
Я вот думаю разбить поисковую фразу на слава и запрост строить с перечисление слов в таком ввиде
Код

SELECT * FROM tab WHERE mytext LIKE 'слово1%' OR mytext LIKE 'слово2%' OR mytext LIKE 'слово3%'

У кого есть какие мысли?

Автор: skyboy 5.12.2010, 16:49
медленнее этого - только вытягивать поочередно все записи в РНР и искать при помощи preg_match.
то, что тебе надо реализовать, называется полнотекстовым поиском(fulltext search).
есть встроенные в СУБД(кто знает, какую ты там используешь?) механизмы, есть внешние относительно БД средства(Sphinx etc). И что угодно будет во много раз бысртее, чем LIKE в SQL запросе.

Автор: proger 5.12.2010, 18:41
Цитата(skyboy @ 5.12.2010,  16:49)
медленнее этого - только вытягивать поочередно все записи в РНР и искать при помощи preg_match.
то, что тебе надо реализовать, называется полнотекстовым поиском(fulltext search).
есть встроенные в СУБД(кто знает, какую ты там используешь?) механизмы, есть внешние относительно БД средства(Sphinx etc). И что угодно будет во много раз бысртее, чем LIKE в SQL запросе.

mysql

Автор: skyboy 6.12.2010, 11:59
ну, в mysql есть http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html. но http://sphinxsearch.com быстрее.

Автор: bars80080 15.12.2010, 18:00
Цитата(skyboy @  6.12.2010,  10:59 Найти цитируемый пост)
но sphinx быстрее. 

я так понимаю это инсталируемая библиотека. а нет ли его просто в виде подключаемых скриптов?

Автор: skyboy 15.12.2010, 21:10
Цитата(bars80080 @  15.12.2010,  17:00 Найти цитируемый пост)
я так понимаю это инсталируемая библиотека

это приложение. отдельно работающее.
Цитата(bars80080 @  15.12.2010,  17:00 Найти цитируемый пост)
а нет ли его просто в виде подключаемых скриптов? 

индексатор на PHP? да, есть такое, но не могу вспомнить, как же называется.

Автор: skyboy 15.12.2010, 22:10
вот, http://www.sfors.ru/articles/261.html
использовал Sphider, нареканий не было. потом поставил Sphinx. к sphider'y не возвращался.

Автор: bars80080 16.12.2010, 00:08
ок, почитаю

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)