kolyazdv
Новичок
поиск в mysql части поля
Добрый день!
интересует вопрос поиска в таблице
`tov` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` longtext,
PRIMARY KEY (`id`)
)
колич строк 10000
по части поля `name`. в строку поиска вводят часть имени и должно выдать все строки где это попадаеться.
Важно быстродествие...
по инфе нашел http://phpclub.ru/detail/article/mysql_search
применимо только
Первым делом надо порезать ручками строку.
$search = substr($search, 0, 64);
64 символов пользователю будет достаточно для поиска. Теперь каленым железом выжжем все "ненормальные" символы.
$search = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $search);
По идее, нельзя давать пользователю возможности искать по слишком коротким словам - кроме всего прочего, это сильно загружает сервер. Итак, разрешим искать только по словам, которые длиннее двух букв (если ограничение больше, надо заменить "{1,2}" на "{1, кол-во символов}").
$good = trim(preg_replace("/\s(\S{1,2})\s/", " ", ereg_replace(" +", " "," $search ")));
А после замены плохих слов - надо сжать двойные пробелы (они были сделаны специально для корректного поиска коротких слов).
$good = ereg_eplace(" +", " ", $good);
но как организовать быстрый поиск ума не приложу
подскажите пож-та
Добрый день!
интересует вопрос поиска в таблице
`tov` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` longtext,
PRIMARY KEY (`id`)
)
колич строк 10000
по части поля `name`. в строку поиска вводят часть имени и должно выдать все строки где это попадаеться.
Важно быстродествие...
по инфе нашел http://phpclub.ru/detail/article/mysql_search
применимо только
Первым делом надо порезать ручками строку.
$search = substr($search, 0, 64);
64 символов пользователю будет достаточно для поиска. Теперь каленым железом выжжем все "ненормальные" символы.
$search = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $search);
По идее, нельзя давать пользователю возможности искать по слишком коротким словам - кроме всего прочего, это сильно загружает сервер. Итак, разрешим искать только по словам, которые длиннее двух букв (если ограничение больше, надо заменить "{1,2}" на "{1, кол-во символов}").
$good = trim(preg_replace("/\s(\S{1,2})\s/", " ", ereg_replace(" +", " "," $search ")));
А после замены плохих слов - надо сжать двойные пробелы (они были сделаны специально для корректного поиска коротких слов).
$good = ereg_eplace(" +", " ", $good);
но как организовать быстрый поиск ума не приложу
