Sphinxは大量のデータの高速クエリーを実現する
Sphinx
といえば、
、mysql
、
など、マスデータを検索するニーズについて、sphinx
の基本概念、インストール、および大きなマスクエリーを動的言語に関連付けて実現する例を紹介します.1.Sphinxの基本概念
Sphinx
一つ
です.他のアプリケーションに高速、低スペース、高結果相関を提供することを意図している
.Sphinx
非常に容易にSQL
データベースとスクリプト言語を統合できます.現在システム内蔵MySQL
およびPostgreSQL
データベースデータソースのサポート.つまり、
sphinx.conf
ファイルで上記のデータベースソースの構成を行うことができるとともに、Sphinx
標準入力から特定のフォーマットのXML
データを読み込むこともサポートされる.Sphinx
効率よくインデックスを作成でき、速度は10 MB/Sに達し、協力できるCoreseek
中国語の分詞に達する2.インストール/使用
使用
①、PHP、javaなどのAPI関数やメソッドクエリなどのAPI呼び出しを使用する.利点はmysqlを再コンパイルする必要がなく、サービス側プロセスが「低結合」であり、プログラムが柔軟で便利に呼び出されることである.
この方法を紹介します
②、プラグイン方式(sphinxSE)でsphinxをmysqlプラグインにコンパイルし、特定のsql文で検索する.sql側で組み合わせが容易で、クライアントに直接データを返すことができるのが特徴です
この方式はORM方式のsqlにあまり友好的ではなく、mysql 5.1以上のバージョンが必要です.
インストール
本文は
Ubuntu 14.04
を例にインストール方法を紹介する:依存:mysql、私の別のブログを参考にすることができます:インストール方法:ubantu 14の下でlampの再記録を構築しますインストールコード
wget http://www.sphinxsearch.com/downloads/sphinx-0.9.8-rc2.tar.gz
tar -xvzf sphinx-0.9.8-rc2.tar.gz
cd sphinx-0.9.8-rc2
./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql
make
make install
/* */
$ cd /usr/local/sphinx/etc
$ cp sphinx.conf.dist sphinx.conf
$ vi sphinx.conf
ここで、
Sphinx
簡単な例を示しますが、基本手順は、/sphinx/etc
次のsphinx.conf.dist
名前をsphinx.conf
に変更してから、sphinx.conf
その構成を変更し、コマンドは以下の通りです.cd /usr/local/sphinx/etc # sphinx
cp sphinx.conf.dist sphinx.conf # Sphinx
Sphinx.conf
でサーバー上のmysql
のユーザー名、パスワード、使用するデータベースなどを設定できます.修正箇所はsphinx.conf
のsource src1
次の行です.3.配置
Sphinx.conf
Sphinx
データベースのパラメータに従って構成する必要があり、先に見るmysql
関連パラメータMysql server:192.168.1.10
Mysql db :test
Mysql :test.sphinx_article
mysql> desc sphinx_article;
+———–+———————+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+———–+———————+——+—–+———+—————-+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| title | varchar(255) | NO | | | |
| cat_id | tinyint(3) unsigned | NO | MUL | | |
| member_id | int(11) unsigned | NO | MUL | | |
| content | longtext | NO | | | |
| created | int(11) | NO | MUL | | |
+———–+———————+——+—–+———+—————-+
6 rows in set (0.00 sec)
以上の構成により、
Sphinx.conf
では、以下のような構成が可能となる.##### ###########
source article_src
{
type = mysql #####
sql_host = 192.168.1.10 ######mysql
sql_user = root ########mysql
sql_pass = pwd############mysql
sql_db = test #########mysql
sql_port= 3306 ###########mysql
sql_query_pre = SET NAMES UTF8 ###mysql , , GBK UTF8
sql_query = SELECT id,title,cat_id,member_id,content,created FROM sphinx_article ####### sql
##### ############
sql_attr_uint = cat_id ########
sql_attr_uint = member_id
sql_attr_timestamp = created ############ UNIX
sql_query_info = select * from sphinx_article where id=$id ######### (CLI)
}
### ###
index article
{
source = article_src ####
path = /usr/local/sphinx/var/data/article #######
docinfo = extern #####
mlock = 0 ###
morphology = none #### ( )
min_word_len = 1 ####
charset_type = utf-8 #####
##### , : , sphinx ,
##### , , coreseek,sfc
######### #####
indexer
{
mem_limit = 256M #######
}
############ sphinx ########
searchd
{
#listen = 9312 ### , , IANA 9312 , 3312
log = /usr/local/sphinx/var/log/searchd.log #### , sphinx , , (rotate)
query_log = /usr/local/sphinx/var/log/query.log ### , : ,
read_timeout = 5 ##
max_children = 30 ### searchd
pid_file = /usr/local/sphinx/var/log/searchd.pid ####### ID
max_matches = 1000 ###
seamless_rotate = 1 ### ,
}
4.構成されたsphinxを使用してインデックスを作成する
ここでは
index
、コマンドを使用します.ここでは前のプロファイルを使用し、前の構成のパスの下に生成されます.bin/indexer -c etc/sphinx.conf article ###
5.クエリー
sphinx
作成したインデックスデータsearch
###### article “ ” ########
bin/search -c etc/sphinx.conf
ここでリモート接続を使用する場合は、utf 8符号化に文字を設定する必要があります.
ここではphpをapi言語として使用 ### sphinx
bin/searchd -c etc/sphinx.conf &
####
php :
require “sphinxapi.php”;
$cl = new SphinxClient();
$cl->SetServer(’192.168.1.150′, 9312); //
#$cl->SetMatchMode(SPH_MATCH_EXTENDED); //
//dump($cl);
$index=”article”;
$res = $cl->Query($keyword, $index);
$err = $cl->GetLastError();
dump($res);
function dump($var)
{
echo ‘<pre>’;
var_dump($var);
echo ‘</pre>’;
}
?>
参考接続:Sphinx中国語ステーション