少し前に、さまざまな言語 (PHP/Python/Ruby/etc) で簡単に呼び出すことができる全文検索システムである Sphinx を使用してみました。インターネット上の情報のほとんどは Linux 環境にインストールされ、使用されます。もちろん、本番環境としては、*nix 環境にデプロイする必要があります。学習やテストには、Windows 環境の方が便利です。
この記事は、中国語の全文検索をサポートするために Windows に Sphinx をインストールして構成する便利な方法を提供することを目的としています。構成部分は Linux で共通です。
1. スフィンクスについて
Sphinx は GPLv2 に基づいてリリースされた全文検索エンジンです。商用認可 (他のプログラムへの埋め込みなど) については、作者 (Sphinxsearch.com) に連絡して商用認可を取得する必要があります。
一般的に言えば、Sphinx は独立した検索エンジンであり、高速、低スペース占有、および結果に関連性の高い全文検索機能を他のアプリケーションに提供することを目的としています。 Sphinx は、SQL データベースやスクリプト言語と簡単に統合できます。
現在のシステムには、MySQL および PostgreSQL データベース データ ソースのサポートが組み込まれており、標準入力からの特定の形式の XML データの読み取りもサポートされています。ソース コードを変更することで、ユーザーは新しいデータ ソースを追加できます (たとえば、他の種類の DBMS のネイティブ サポート)。
検索 API は PHP、Python、Perl、Rudy、Java をサポートしており、MySQL ストレージ エンジンとしても使用できます。検索 API は非常にシンプルで、数時間以内に新しい言語に移植できます。
スフィンクスの特徴:
2. Windows への Sphinx のインストール
1. 最新の Windows バージョンを http://www.sphinxsearch.com/downloads.html で見つけます。ここでダウンロードしたのは、MySQL をサポートする Win32 リリースのバイナリです。
2. D:sphinx の下にインデックス ファイルとログ ファイル用のログ ディレクトリを作成します (ファイル名の変更に注意してください)。
3. D:sphinxbinsphinx.conf を変更する必要があるものをここにリストします。
リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー リーリー4. テストデータをインポートする
C:Program FilesMySQLMySQL Server 5.0bin>mysql -uroot test
D:sphinxbin>indexer.exe –all
Sphinx 0.9.8-リリース (r1533)著作権 (c) 2001-2008、アンドリュー・アクショーノフ4 つのドキュメントを収集、0.0 MB
設定ファイル「./sphinx.conf」を使用しています…
インデックス「test1」をインデックス化しています…ソート済み 0.0 M ヒット、100.0% 完了
合計 4 つのドキュメント、193 バイト
合計 0.101 秒、1916.30 バイト/秒、39.72 ドキュメント/秒
D:スフィンクスビン>
6.「テスト」を検索してみてください
D:sphinxbin>search.exe テスト
Sphinx 0.9.8-リリース (r1533)著作権 (c) 2001-2008、アンドリュー・アクショーノフ
設定ファイル「./sphinx.conf」を使用しています…
インデックス「test1」: クエリ「test」: 0.000 秒以内に合計 3 件中 3 件の一致が返されました一致の表示:
id=1
1. document=1、weight=2、group_id=1、date_added=2008 年 11 月 26 日水曜日 14:58:59グループID=1
group_id2=5
date_added=2008-11-26 14:58:59
title=テスト1
content=これは私のテスト ドキュメント 1 番目です
内の検索もチェックします。 フレーズ。
2. document=2、weight=2、group_id=1、date_added=2008 年 11 月 26 日水曜日 14:58:59
id=2
グループID=1
group_id2=6
date_added=2008-11-26 14:58:59
title=テスト2
content=これは私のテストドキュメントその2です
3. document=4、weight=1、group_id=2、date_added=2008 年 11 月 26 日水曜日 14:58:59
id=4
グループID=2
group_id2=8
date_added=2008-11-26 14:58:59
title=ドキュメント番号 4
content=これはグループをテストするためのものです言葉:
1. 「テスト」: 3 つのドキュメント、5 つのヒット
D:スフィンクスビン>
みんな出てきました。
6. 中国語検索をテストする
テストデータベース内のドキュメントデータテーブルを変更します。
UPDATE `test`.`documents` SET `title` = '中国語のテスト', `content` = 'これは私のテスト文書番号 2 です、あなたはそれを見つけることができるはずです' WHERE `documents`.`id` = 2 ;
インデックスを再構築:
D:sphinxbin>indexer.exe –all
「中文」を検索してみてください:
D:sphinxbin>search.exe 中国語
Sphinx 0.9.8-リリース (r1533)
著作権 (c) 2001-2008、アンドリュー・アクショーノフ設定ファイル「./sphinx.conf」を使用しています…
インデックス「test1」: クエリ「中文」: 0.000 秒で合計 0 件中 0 件の一致が返されました言葉:
D:スフィンクスビン>
見つからないようです。これは、Windowsのコマンドラインのエンコーディングがgbkであるため、当然見つかりません。プログラムで試して、D:sphinxapi の下に新しいファイル foo.php を作成し、utf-8 エンコーディングに注意してください
「sphinxapi.php」が必要です;
$s = 新しい SphinxClient();
$s->SetServer('localhost',3312);
$result = $s->Query('中文');
var_dump($result);
?>
Sphinx検索サービスを開始します
D:sphinxbin>searchd.exe
Sphinx 0.9.8-リリース (r1533)
著作権 (c) 2001-2008、アンドリュー・アクショーノフ警告: Windows では – コンソール モードを強制します
設定ファイル「./sphinx.conf」を使用しています…
0.0.0.0:3312 にサーバーソケットを作成しています
接続を受け付けています
PHPクエリを実行:
php d:/sphinx/api/foo.php
結果は出ましたか?残りの作業は、マニュアルを読み、高レベルの構成をゆっくりと検討することです。