ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して Lucene パッケージを呼び出し、全文検索を実装する_PHP チュートリアル

PHP を使用して Lucene パッケージを呼び出し、全文検索を実装する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:41:591258ブラウズ

作業上の必要性により、多数の Web サイトの全文検索を実装するには PHP を使用する必要があります。
全文検索用の最も人気のある検索エンジン ライブラリは、Apache のサブプロジェクトです。 Jakarta では、シンプルで実用的な API を提供しています。
これらの API を使用すると、あらゆる基本的なテキスト データ (データベースを含む) に対して全文検索を実行できます。

PHP 自体が外部 Java クラスの呼び出しをサポートしているため、最初に Java でクラスを作成しました。
このクラスは、Lucene の API を呼び出して 2 つのメソッドを実装します。
public String createIndex(String indexDir_path,String dataDir_path)

public String searchword(String ss,Stringindex_path)

createIndex はインデックス作成メソッドです
渡される 2 つのパラメータは、indexDir_path (インデックス ファイルのディレクトリ) と dataDir_path (インデックス ファイルのディレクトリ) です。インデックス ファイルのディレクトリ)、インデックス ファイルのリスト文字列を返します。
もう 1 つは、渡されたキーワード パラメーター (ss) を通じてインデックスを取得する searchword、index_path はインデックス ファイルのディレクトリです。取得したすべてのファイルを返します。

これはソース コードです。非常にシンプルなので、参照してください: TxtFileIndexer.java

PHP プログラムは、これら 2 つのメソッドを呼び出して Lucene への呼び出しを実装し、それによって全文検索の目的を達成します。

PHP の呼び出しメソッドは次のとおりです:

まず、先ほど作成した TxtFileIndexer クラスのインスタンスを作成します。
$tf = 新しい 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) ;

$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.dll

JavaBridgeWEB-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

環境で完全に実行できます。



http://www.bkjia.com/PHPjc/486089.html

www.bkjia.com本当http://www.bkjia.com/PHPjc/486089.html技術記事仕事の都合上、多数の Web サイトの全文検索を実装するには PHP を使用する必要があります。全文検索用の最も人気のある検索エンジン ライブラリは Lucene、つまり Apache Jakart です...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。