Sphinx は、ロシアの Andrew Aksyonoff によって開発された全文検索エンジンです。高速かつ省スペースで、結果に関連性の高い全文検索機能を他のアプリケーションに提供することを目的としています。 Sphinx は、SQL データベースやスクリプト言語と簡単に統合できます。現在のシステムに組み込まれている MysqL および PostgreSQL データベース データ ソースのサポートでは、標準入力からの特定の形式の XML データの読み取りもサポートされています。ソースコードを変更することで、新しいデータソースを追加できます (例: 他のタイプの DBMS のネイティブサポート)
1. スフィンクスの中国語単語の分割
中国語の全文検索はセマンティック セグメンテーションに基づいています。現在、ほとんどのデータベースは Mysql などの中国語の全文検索をサポートしていません。 Sphinx が中国語の全文検索を実行する必要がある場合は、coreseek や sfc など、それを補うプラグインも必要になります。
2. インストール
Sphinx は 2 つの方法で mysql に適用できます:
(1) API 呼び出しを使用する。たとえば、PHP、Java などの API 関数またはメソッドを使用してクエリを実行します。利点は、MySQL を再コンパイルする必要がなく、サーバー プロセスが「低結合」であり、プログラムを柔軟かつ便利に呼び出すことができることです。欠点は、検索プログラムが既に存在する場合、一部のプログラムを変更する必要があることです。プログラマーにお勧めします。
(2) プラグイン メソッド (sphinxSE) を使用して sphinx を mysql プラグインにコンパイルし、特定の SQL ステートメントを使用して取得します。 SQL側での結合が容易で、プログラム内では該当するSQLのみを修正するだけで、2回目のクエリ(注)を必要とせずに直接クライアントにデータを返すことができるのが特徴ですが、これは非常に不便です。たとえば、ORM を使用して開発されたプログラム。さらに、mysql を再コンパイルする必要があり、mysql-5.1 以降でプラグイン ストレージをサポートする必要があります。システム管理者はこの方法を使用できます。
最初の方法を使用してインストールします:
ソフトウェア環境:
インストール:
インストールが完了したら、/usr/local/sphinx に bin など var という 3 つのディレクトリがあるかどうかを確認してください。そうであれば、インストールは正しく行われています。
SFCインストール
coreseekインストール
3. 構成
特定のインスタンス構成ファイル:
##### インデックスソース ###########
ソース記事_src
{
type = mysql #####データソースタイプ
sql_host = 192.168.1.10 ######mysqlhost
sql_user = root ########mysql ユーザー名
sql_pass = pwd############mysql パスワード
sql_db = テスト #########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 = メンバーID
sql_attr_timestamp = 作成された ############ UNIX タイムスタンプ属性
sql_query_info = select * from sphinx_article where id=$id ######### コマンド インターフェイス (CLI) 呼び出しのテスト用
}
### インデックス ###
インデックス記事
{
source =article_src ####インデックスのソースを宣言します
path = /usr/local/sphinx/var/data/article #######インデックスファイルの保存パスとインデックスファイル名
docinfo = extern ##### 文書情報の保存方法
mlock = 0 ###キャッシュデータメモリロック
形態学 = なし #### 形態学 (中国語には無効)
min_word_len = 1 #### インデックス付き単語の最小長
charset_type = utf-8 #####データエンコーディング
##### 文字テーブル、注: この方法を使用すると、スフィンクスは中国語の文字をセグメント化します。
##### つまり、単語のインデックス作成を実行する必要があります。中国語の単語分割を使用したい場合は、coreseek や sfc
などの他の単語分割プラグインを使用する必要があります。
}
######### インデクサー構成 #####
インデクサー
{
mem_limit = 256M ####### メモリ制限
}
検索しました
{
#listen = 9312 ### このバージョンから、公式 9312 ポートが IANA によって正式に承認されました。以前のバージョンのデフォルトは 3312
でした。
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 ### シームレスな切り替えをサポートするかどうか。通常、増分インデックスを作成するときに必要です
}
[root@localhost sphinx]# bin/indexer -c etc/sphinx.confarticle ### インデックスファイルを作成するコマンド
Sphinx 0.9.9-リリース (r2117)
著作権 (c) 2001-2009、アンドリュー・アクショーノフ
インデックス「記事」のインデックス作成…
1000 個のドキュメントを収集、0.2 MB
0.4 M ヒットをソート、99.6% 完了
合計 1000 ドキュメント、210559 バイト
合計 3.585 秒、58723 バイト/秒、278.89 ドキュメント/秒
合計 2 回の読み取り、0.031 秒、1428.8 kb/コール平均、15.6 ミリ秒/コール平均
合計 11 回の書き込み、0.032 秒、671.6 kb/コール平均、2.9 ミリ秒/コール平均
前のステップでインデックスを確立しました。今度は新しく作成したインデックスをテストします。テストには 2 つの方法があります: CLI と API 呼び出し
(1) CLI 側のコマンド テストは、sphinx に付属の search コマンドを使用します: search
[root@localhost sphinx]# bin/search -c etc/sphinx.conf Liu Li
Sphinx 0.9.9-リリース (r2117)
著作権 (c) 2001-2009、アンドリュー・アクショーノフ
インデックス 'mdmLoginLog': クエリ 'Liu Li ': 0.000 秒以内に合計 6 件中 6 件の一致が返されました
一致の表示:
1、weight=2
2、document=3、weight=2
4、document=2
5。 、ウェイト=2
6、ドキュメント=8、ウェイト=2
。
単語:
2.「利」: 6 件のドキュメント、6 件のヒット
(2) PHP の API を使用してテストします。テストする前に、Sphinx サービス プロセスを開始し、centos ファイアウォールのポート 9312 を開きます
[root@localhost sphinx]# bin/searchd -c etc/sphinx.conf & ### Sphinxをバックグラウンドで実行する
[1] 5759
[root@localhost sphinx]# Sphinx 0.9.9-リリース (r2117)
著作権 (c) 2001-2009、アンドリュー・アクショーノフ
設定ファイル「etc/sphinx.conf」を使用…
[1]+ 完了 bin/searchd -c etc/sphinx.conf
参考 http://www.sphinxsearch.org/sphinx-tutorial
http://www.bkjia.com/PHPjc/1128121.html