ホームページ > php教程 > php手册 > PHP を使用して Lucene パッケージを呼び出し、全文検索を実装します。

PHP を使用して Lucene パッケージを呼び出し、全文検索を実装します。

WBOY
リリース: 2016-06-21 09:05:49
オリジナル
884 人が閲覧しました

全文検索

仕事の都合上、多数の Web サイトの全文検索を実装するには PHP を使用する必要があります
全文検索用の最も人気のある検索エンジン ライブラリは、Apache Jakarta のサブプロジェクトです。は、シンプルで実用的な API を提供します。
これらの API を使用すると、あらゆる基本的なテキスト データ (データベースを含む) に対して全文検索を実行できます。
PHP 自体が外部 Java クラスの呼び出しをサポートしているため、最初に Java でクラスを作成しました。
このクラスは、Lucene の API を呼び出して 2 つのメソッドを実装します。 )
ここで、createIndex はインデックス作成メソッドです。
渡される 2 つのパラメーターは、indexDir_path (インデックス付きファイルのディレクトリ)、dataDir_path (インデックス付きファイルのディレクトリ)、そしてインデックス付きファイルのリスト文字列が返されます。
もう 1 つは、検索する searchword です。渡されたキーワード パラメータ (ss) によるインデックスは、インデックス ファイルのディレクトリです。取得したすべてのファイルを返します。
これがソース コードです。非常に単純です。参照してください:
TxtFileIndexer.java

PHP プログラムは、フルテキスト検索の目的を達成するために、Lucene への呼び出しを実現するためにこれら 2 つのメソッドを呼び出します。 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("ここにキーワードがありますsearch",$index_path );
print $s;
PHPで設定できるJavaクラスのパスにも注意してください
java_require("F:/test/php_lucene/htdocs/lib/"); //これは例です。私のクラスと Lucene をすべてこのディレクトリに置きます
それだけです。非常に簡単ではありませんか?
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/

現在のバージョンはphp-java-bridge_3.0.8_j2ee.zipです

解凍して配置しますJavaBridgeWEB -INFcgijava-x86-windows.dllJavaBridgeWEB-INFlibJavaBridge.jar
c:phpextディレクトリにコピーし、
java-x86-windows.dllの名前をphp_java.dll
2に変更します。php.ini (例)
extension = php_java.dll
[Java]
java.class.path = "C:phpextJavaBridge.jar;F:testphp_lucenehtdocs"
java.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
環境で完全に実行できます。




関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート