<?php
//что ищем
$search = 'поисковая строка' ;
/*
Для организации поиска при
небольшой нагрузки и
коротких текстах отлично
подходит оператор LIKE,
пример
*/
FROM tablica WHERE pole LIKE
'% $search %' " );
/*
Тут вроде бы все нормально,
но когда количество записей
и их объем сильно возрастет
вы заметите, что поиск
начинает занимать довольно
много времени, и в итоге
может достичь
недопустимых пределов.
В таких случаях необходимо
воспользоваться ИНДЕКСАМИ,
например, сделаем через
phpMyAdmin полнотекстовый
индекс для ячейки pole, sql
дамп создания таблицы
приведен ниже
CREATE TABLE `tablica` (
`id` int(11) NOT NULL
auto_increment,
`pole` TEXT,
PRIMARY KEY (`id`),
FULLTEXT KEY `kluch`
(`pole`)
) ENGINE=MyISAM DEFAULT
CHARSET=utf8
обратите внимание на
FULLTEXT KEY `kluch`
(`pole`), индекс повешен на
ячейку pole,
как нетрудно заметить,
размер базы данных из-за
индекса увеличился примерно
вдвое (за все надо
платить).
Теперь искать по такой базе
надо вот так:
*/
FROM tablica WHERE MATCH
pole AGAINST (' $search ') " );
/*
Скорость поиска возрастет
минимум в 10раз, так же из
плюсов то, что результаты
будут отсортированы
по релевантности (тоесть
сначала вся фраза, потом по
частоте попадания слов)!
(если не применять ORDER BY
для иной сортировки конечно)
Также есть и минусы:
1. слова менее 4 символов
не учитываются (как не
имеющие "веса")
2. русские фразы находятся
без учета морфологии
3. размер базы увеличивается
из-за индекса
4. операции INSERT и UPDATE
выполняются медленнее из-за
индекса
если у вас в таблице более
10000 строчек и размер бд
более 5мб наверное стоит
перейти на полнотекстовый
поиск
*/
?>