SphinxはSQLベースの高性能全文検索エンジンです。Sphinxの性能は多くの全文検索エンジンの中でも指折りです。Sphinxを利用することで、データベース自体よりも専門的な検索機能を実現でき、また的を絞ったパフォーマンス最適化を数多く行うことができます。

Sphinxの特徴

  • 高速インデックス作成:約3分で100万件近いレコードのインデックスを作成でき、さらに増分インデックス方式を採用しているため、インデックスの再構築が非常に高速です。
  • 電光石火の検索速度:1000万件という大量データでも、クエリ速度はミリ秒レベル以上で、2~4Gのテキスト量では平均クエリ時間は0.1秒未満です。
  • 多くのスクリプト言語向けに検索APIを設計しました。例えばPHP、Python、Perl、Rubyなどがあります。そのため、ほとんどのプログラミングアプリケーションでSphinxの関連インターフェースを簡単に呼び出すことができます。
  • MySQL向けにストレージエンジンプラグインを設計しました。そのため、MySQL上でSphinxを使用するなら、非常に便利です。
  • 分散検索をサポートし、システム性能を水平に拡張できます。

PHP+MySQL+Sphinx 検索エンジンアーキテクチャ図

MySQLにSphinxをインストールする

MySQLにSphinxをインストールする方法は2つあります:

  • 1つ目の方法はAPI呼び出しを利用する方法です。PHP、Python、Perl、Rubyなどのプログラミング言語のAPI関数を使用してクエリを実行できます。この方法ではMySQLを再コンパイルする必要がなく、モジュール間の変更が比較的少なく、柔軟です。
  • 2つ目の方法は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

Sphinx中国語分詞プラグインCoreseekのインストール

注:coreseekのインストールチュートリアルは〜からここ、以下に詳細な手順を示します:

autoconfのインストールとアップグレード

coreseekはautoconf 2.64以上のバージョンを必要とするため、autoconfをアップグレードする必要があります。そうしないとエラーが発生します。http://download.chinaunix.net/download.php?id=29328&ResourceID=648autoconf-2.64.tar.bz2をダウンロードし、インストール方法は以下の通りです:

tar -jxvf autoconf-2.64.tar.bz2
cd autoconf-2.64
./configure
make
make install

下载coreseek

新しいバージョンのcoreseekは、辞書とsphinxソースプログラムを1つのパッケージにまとめているため、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辞書および設定ファイルを生成します。

新しいバージョンでは自動生成されています。

总结

Sphinxは高性能なSQL全文検索エンジンとして、開発者が引き続き注目する価値があります。特に多言語のAPIサポートにより、開発者はより便利に応用できます。

来源:http://www.codeceo.com/article/sphinx-sql-search-engine.html
著者:码农网 – 小峰