ホームページ  >  記事  >  バックエンド開発  >  Windows に Sphinx をインストールして使用する [中国語の全文検索をサポート]_PHP チュートリアル

Windows に Sphinx をインストールして使用する [中国語の全文検索をサポート]_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:31:02918ブラウズ

少し前に、さまざまな言語 (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 は非常にシンプルで、数時間以内に新しい言語に移植できます。

スフィンクスの特徴:

  • 高速インデックス作成 (最新の CPU では、ピークパフォーマンスは 10MB/秒に達する可能性があります);
  • 高性能検索 (2 ~ 4 GB のテキスト データで 1 回の取得あたりの平均応答時間は 0.1 秒未満)。
  • 大量のデータを処理できます (現在、単一 CPU システムで 100GB を超えるテキスト データと 1 億ドキュメントを処理できることがわかっています);
  • 優れた関連性アルゴリズム、フレーズの類似性と統計に基づく複合ランキング手法 (BM25) を提供します。
  • 分散検索をサポート;
  • 文書の抜粋生成を提供する。
  • 検索サービスを提供するための MySQL ストレージ エンジンとして使用できます。
  • ブール値、フレーズ、単語の類似性などの複数の検索モードをサポートします。
  • このドキュメントは複数の全文検索フィールド (最大 32 個まで) をサポートしています。
  • ドキュメントは複数の追加属性情報 (例: グループ化情報、タイムスタンプなど) をサポートします。
  • ストップワードクエリ。
  • シングルバイトエンコーディングとUTF-8エンコーディングをサポートします。
  • ネイティブ MySQL サポート (MyISAM と InnoDB の両方をサポート)。
  • ネイティブ PostgreSQL サポート。
中国語のマニュアルはここから入手できます。翻訳者の尽力に感謝します。

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 5. インデックスを作成します

D:sphinxbin>indexer.exe –all

Sphinx 0.9.8-リリース (r1533)
著作権 (c) 2001-2008、アンドリュー・アクショーノフ


設定ファイル「./sphinx.conf」を使用しています…
インデックス「test1」をインデックス化しています…

4 つのドキュメントを収集、0.0 MB

ソート済み 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 件の一致が返されました

一致の表示:
1. document=1、weight=2、group_id=1、date_added=2008 年 11 月 26 日水曜日 14:58:59

id=1

グループ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

結果は出ましたか?残りの作業は、マニュアルを読み、高レベルの構成をゆっくりと検討することです。

興味がありそうな記事

  • Windows での Memcache のインストールと設定のチュートリアル
  • Windows のコマンドラインで PHP ファイルを実行する方法
  • Sphinx の実装 中国語の全文検索
  • mysql データベースのマスター/スレーブWindows 環境 同期バックアップ手順
  • Windows システムに memcache をインストールする
  • Windows 7 で PHP 実行環境をインストールして構成する方法
  • php は、文字列がすべて英語か、純粋な中国語か、中国語と英語の組み合わせかを判断します
  • 構成情報 (レジストリ内) が不完全または破損しているため、Windows はこのハードウェア デバイスを起動できません。 (コード 19) 解決策

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/764167.html技術記事少し前に、さまざまな言語(PHP/Python/Ruby/etc)から簡単に呼び出せる全文検索システムSphinxを使ってみました。インターネット上の情報のほとんどは、Linux 環境でのインストールと使用に関するものです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。