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 – Сяофэн