PHP を使用して Lucene パッケージを呼び出し、全文検索を実装します
[全文検索] PHP を使用して Lucene パッケージを呼び出し、全文検索を実装します
---------------------- --------- -------------
http://www.chinaunix.net 著者: z33 公開日: 2006-06-24 17: 43:53
【コメントを残す】[原文を見る][Phpディスカッションフォーラム][閉じる]
/*再投稿する場合は以下の情報を守ってください*/
著者: [url=http] ://spaces.msn.com/members/newbdez33/ ] 張潔
URL: http://spaces.msn.com/members/newbdez33/
http://www.phpboom.com/
作業上の都合により、多数の Web サイトの全文検索を実装するには PHP を使用する必要があります。
全文検索用の最も人気のある検索エンジン ライブラリは Lucene です。 .
これは Apache Jakarta のサブプロジェクトであり、シンプルで実用的な API を提供します。
これらの API を使用すると、あらゆる基本的なテキスト データ (データベースを含む) に対して全文検索を実行できます。
PHP 自体が外部 Java クラスの呼び出しをサポートしているため、最初に Java でクラスを作成しました。
このクラスは、Lucene の API を呼び出して 2 つのメソッドを実装します。
* public String createIndex( String indexDir_path,String dataDir_path)
* public String searchword(String ss,String index_path)
ここで、createIndex はインデックス作成メソッドであり、
は 2 つのパラメーターを渡します:indexDir_path (インデックス付きファイルのディレクトリ)、 dataDir_path (インデックス付きファイルのディレクトリ)、インデックス付きファイルのリスト文字列を返します。
もう 1 つは、受信キーワード パラメータ (ss) を通じてインデックスを取得する searchword、index_path インデックス ファイルのディレクトリです。取得したすべてのファイルを返します。
ソース コードは次のとおりです。非常にシンプルなので、参照してください: [url=http://newbdez33.googlepages.com/TxtFileIndexer.java]TxtFileIndexer.java
そしてPHP プログラム呼び出し これら 2 つのメソッドは、全文検索の目的を達成するために Lucene への呼び出しを実装します。
PHP の呼び出しメソッドは次のとおりです。
まず、作成した TxtFileIndexer クラスのインスタンスを作成します。
$tf = new Java('TestLucene.TxtFileIndexer'); >次に、通常の PHP クラス呼び出しメソッドを呼び出し、最初にインデックスを作成します。
$data_path = "F:/test/php_lucene/htdocs/data/manual"; // インデックス付きコンテンツのディレクトリを定義します $index_path = "F:/test/php_lucene/htdocs/data/search"; //生成されたインデックスファイルの保存ディレクトリを定義します
$s = $tf->createIndex($index_path,$data_path); // Java クラス メソッドを呼び出します
print $s; // 返された結果を出力します
今回は取得してみます:
$index_path = "F:/test/php_lucene/htdocs/ data/ search"; //生成されたインデックスファイルの格納ディレクトリを定義
$s = $tf->searchword("ここに検索用のキーワードがあります",$index_path);
print $s;
また、PHP で設定できる Java クラスのパスにも注意してください。
java_require("F:/test/php_lucene/htdocs/lib/"); //これは例です。両方とも私のクラスです。そして Lucene このディレクトリ
に置くだけです。とても簡単ですね。
PHP ソース コード: [url=http://newbdez33.googlepages.com/test.php]test.php
次に環境構成について説明します。
まず第一に、Java SDK が必要です。これは必須です。私はバージョン 1.4.2 を使用していますが、他のバージョンでも問題ないはずです。
PHP5、PHP4 を試してみました。動作するはずです。
PHP5 の Java 拡張機能は調整されておらず、これまで Java の呼び出しは非常に非効率的で遅かったため、Php/Java Bridge プロジェクトを使用しました。
1. JavaBridge をダウンロードします
URL: http://sourceforge.net/projects/php-java-bridge/
現在のバージョンは
[url=http://prdownloads. sourceforge .net/php-java-bridge/php-java-bridge_3.0.8_j2ee.zip?download]php-java-bridge_3.0.8_j2ee.zip
JavaBridgeWEB-INFcgijava-x86 -windows を解凍します。 .dll
JavaBridgeWEB-INFlibJavaBridge.jar
c:phpext ディレクトリにコピーし、
java-x86-windows.dll を php_java.dll に名前変更します
2 .Modify php .ini (例)
extension=php_java.dll
[Java]
java.class.path = "C:phpextJavaBridge.jar;F:testphp_lucenehtdocs"
java_home = " C:j2sdk1.4.2_10"
java.library.path = "c:phpext;F:testphp_lucenehtdocs"
3. Apache を再起動します。
4. インデックス作成用のファイルがいくつか見つかります。
test.php でインデックス ファイルとデータ ファイルのパスを変更できます。
TxtFileIndexer.java の 37 行目は、インデックス作成を html サフィックスを持つファイルのみに制限しており、必要に応じて変更できます。
現状 (JavaBridge は Linux と Freebsd をサポート) によれば、
linux または freebsd/apache2/php4/lucene/JavaBridge
環境で実行できます。
この記事はいつでも更新される可能性があり、ここからアクセスできます:
[url=http://newbdez33.googlepages.com/php_lucene] PHP を使用して呼び出します全文検索を実現する Lucene パッケージ