Sphinx — полнотекстовый поисковик по Mysql и Postgre, отличающийся скоростью от своих конкурентов, представленный на РИТ-2007 Петром Зайцевым. Использовать его имеет смысл только на больших проектах, где объем данных вынуждает уже использовать выделенный сервер.
Обычный поиск как известно очень простой и очень медленный (условно 1.2 МБ/сек) ..
SELECT * FROM my_table WHERE my_col LIKE '%word%'
Второй вариант — boolean search не настолько гибкий, но побыстрей (41 МБ/сек). Конкурентов MnoGoSearch (140 МБ/сек) и Lucene, Sphinx обходит с 2200 МБ/сек.
Понятно что каждое решение имеет свою сложность, порой не линейную в зависимости от размера БД и очевидно что Sphinx аппаратно не в состоянии пробежать 2 ГБ данных в секунду, дело в том что сначала БД индексируется, а потом searchd.exe демон висит в памяти, кушая от 100 мб оперативки, и предоставляет результаты выборки по API, в PHP или ruby .
- Создание таблицы в базе данных по которой будет проводится поиск. В качестве тестовой предлагается test.documents вместе с данными и dump-файлом
- Создание конфиг файла. Если конфиг файл вы меняете впервые то замените @CONFDIR@ на реальную папку.
- Запуск индексатора.
indexer.exe --all
- Запуск сервиса searchd.exe с портом 3312, который будет выдавать результаты поиска по индексу.
- Собственно запрос через API. В качестве примера есть test.php.