Sphinx — это высокопроизводительная полнотекстовая поисковая система на основе SQL. Её производительность — одна из лучших в области полнотекстовых поисковых систем. С помощью Sphinx мы можем реализовать более профессиональные функции поиска, чем сама база данных, и доступно множество целенаправленных оптимизаций производительности.

Возможности Sphinx
- Быстрое создание индекса: индекс из почти 1 миллиона записей можно создать примерно за 3 минуты. Кроме того, используется инкрементальное индексирование, что делает перестроение индекса очень быстрым.
- Молниеносная скорость поиска: даже при большом объёме данных, например 10 миллионов записей, скорость выполнения запросов остаётся на уровне миллисекунд. Для 2-4 GB текста среднее время запроса составляет менее 0.1 секунды.
- Поисковые API разработаны для многих скриптовых языков, таких как PHP, Python,Perl, Ruby и т. д. Поэтому вы можете удобно вызывать соответствующие интерфейсы Sphinx в большинстве программных приложений.
- Для MySQL был разработан плагин механизма хранения. Поэтому, если вы используете Sphinx вместе с MySQL, удобнее не придумаешь.
- Поддерживает распределённый поиск, позволяя горизонтально масштабировать производительность системы.
Схема архитектуры поискового движка PHP+MySQL+Sphinx

Установка Sphinx в MySQL
Существует два способа установки Sphinx на MySQL:
- Первый способ — использовать вызовы API. Мы можем использовать PHP, Python,Perl, API-функции Ruby и других языков программирования для выполнения запросов. Этот способ не требует перекомпиляции MySQL, влечёт меньше изменений между модулями и относительно гибок.
- Второй способ требует перекомпиляции MySQL и компиляции Sphinx в MySQL как плагина. Этот способ требует меньше изменений в программе — нужно только изменить SQL-запросы. Однако обязательное условие — ваша версия MySQL должна быть 5.1 или выше.
Ниже описан первый способ установки:
#下载最新稳定版 wget http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz tar xzvf sphinx-0.9.9.tar.gz cd sphinx-0.9.9 ./configure --prefix=/usr/local/sphinx/ --with-mysql --enable-id64 make make install
Установка плагина китайской сегментации слов Coreseek для Sphinx
Примечание: руководство по установке coreseek можно найтиздесь, подробный процесс выглядит следующим образом:
Установка и обновление autoconf
Поскольку coreseek требует autoconf версии 2.64 или выше, необходимо обновить autoconf; иначе возникнут ошибки. Скачать можно отсюдаhttp://download.chinaunix.net/download.php?id=29328&ResourceID=648Скачайте autoconf-2.64.tar.bz2. Способ установки следующий:
tar -jxvf autoconf-2.64.tar.bz2 cd autoconf-2.64 ./configure make make install
Скачивание coreseek
В новой версии coreseek словарь и исходный код Sphinx помещены в один пакет, поэтому вам нужно только скачать пакет coreseek.
wget http://www.wapm.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
Установка mmseg (словарь, используемый coreseek)
tar xzvf coreseek-3.2.14.tar.gz cd mmseg-3.2.14 ./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决 ./configure --prefix=/usr/local/mmseg3 make && make install cd ..
Установка coreseek (Sphinx)
cd csft-3.2.14 sh buildconf.sh #输出的warning信息可以忽略,如果出现error则需要解决 ./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql make && make install cd ..
Тестирование сегментации слов mmseg и поиска coreseek
Примечание: необходимо заранее установить кодировку zh_CN.UTF-8, чтобы гарантировать корректное отображение китайского. Кодировка моей системы — en_US.UTF-8, что тоже работает.
cd testpack cat var/test/test.xml #此时应该正确显示中文 /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml /usr/local/coreseek/bin/indexer -c etc/csft.conf --all /usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索 此时正确的应该返回 words: 1. '网络': 1 documents, 1 hits 2. '搜索': 2 documents, 5 hits
Генерация словаря mmseg и файлов конфигурации
Новая версия уже сгенерировала их автоматически.
Итог
Как высокопроизводительный SQL-движок полнотекстового поиска, Sphinx заслуживает постоянного внимания разработчиков, особенно благодаря поддержке API на разных языках, что упрощает его использование разработчиками.
Источник:http://www.codeceo.com/article/sphinx-sql-search-engine.html
Автор: Manong.com – Сяофэн