Перейти к основному содержимому

Sphinx

· 2 мин. чтения

Sphinx - полнотекстовый поисковик по Mysql и Postgre, отличающийся скоростью от своих конкурентов, представленный на РИТ-2007 Петром Зайцевым . Использовать его имеет смысл только на больших проектах, где объем данных вынуждает уже использовать выделенный сервер.Sphinx - полнотекстовый поисковик по Mysql и Postgre, отличающийся скоростью от своих конкурентов, представленный на [РИТ-2007](ht

Обычный поиск как известно очень простой и очень медленный (условно 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 .

  1. Создание таблицы в базе данных по которой будет проводится поиск. В качестве тестовой предлагается test.documents вместе с данными и dump-файлом
  2. Создание конфиг файла. Если конфиг файл вы меняете впервые то замените @CONFDIR@ на реальную папку.
  3. Запуск индексатора.
    indexer.exe --all
  4. Запуск сервиса searchd.exe с портом 3312, который будет выдавать результаты поиска по индексу.
  5. Собственно запрос через API. В качестве примера есть test.php.