ホームページ  >  記事  >  バックエンド開発  >  PHP による lucene (Java クラス) 呼び出しの問題

PHP による lucene (Java クラス) 呼び出しの問題

WBOY
WBOYオリジナル
2016-06-23 14:05:01920ブラウズ

最近、php+lucene を使用して検索ページを構築したいと考えています。基本的なアイデアは、ユーザーが php に情報を入力し、php ページが lucene を呼び出して検索し、結果を php に返し、php が結果を php に表示することです。ユーザー。

現在の環境は winXP+PHP5.3+apache2.2+mysql、lucene バージョン 3.5 です

私のアイデアは、まず Java を使用して、lucene API を呼び出すクラスを作成し、基本的な取得関数を実装します。次に、php を使用してこの Java クラスを呼び出し、取得します。

関連ドキュメントを確認したところ、php5 には php_java.dll 拡張子がなくなったため、php_java_bridge を使用する必要があります。
そこで、インターネットで見つけた情報に従って、php_java_bridge5.4 をダウンロードしました。インストールと設定は基本的に成功しました。テスト時:
1. Java の組み込みクラスを呼び出すことができます。
2. Java クラスをカスタマイズし (Java 組み込みクラスのみを使用する場合)、それをクラス ファイルにコンパイルし、jar ファイルにパッケージ化します。 java_require("...") でインポートした後、カスタムを呼び出すことができます。クラス。

しかし、今の問題は次のとおりです。
lucene クラスがカスタム Java クラスにインポートされている場合 (これが私が現在行っていることです)、php でのこの Java クラスの呼び出しは失敗します。javaBridge.jar vmbridge.log のログ ファイルを確認してください。 、エラーは主に次のようなものです:
java.lang.ClassNotFoundException: 未解決の外部参照: java.lang.NoClassDefFoundError: org/apache/lucene/store/Directory -- コンストラクターを呼び出すことができません
個人的な理解では、lucene はできないようです。 API のクラスにより、オブジェクトの作成が妨げられます。


今思いつくのは、PHP を使って直接 Lucene の API インターフェースを呼び出すことくらいですが、それが可能かどうかは分かりませんが、もっと面倒な気がします。

PHP が Java クラスを呼び出して作業を調整する仕組みがよくわかりません。良い解決策についてアドバイスをお願いします。 。 。


ディスカッション(解決策)に返信

httpを使用できます。 Java インターフェースを呼び出すと、JSON データが返されます。次に、php が対応する表示を行います。拡張機能を介して Java と連携する必要はありません

lucene.jar を一緒にパッケージ化すると、メインの投稿の状況は改善されました。
しかし、phpでカスタムクラスのメソッドを呼び出してドキュメントを取得する場合、ヒットできないようです。 。 。コードは同様です:
$lucene = new Java("testLucene.TestLucene");
echo 'path='.$lucene->search(new Java("java.lang.String","美" ),new Java("java.lang.String","D:/test/index/"));
?>
同じコード (カスタム クラスのインスタンス化後の検索メソッドの呼び出しも) はテストですjavaで記述 カテゴリ内で「美」という単語に最もよく一致する文書を正しく検索できます。 。 。

----------------------------------分割---------- --- ---------------------------------

http を使用できます。 Java インターフェースを呼び出すと、JSON データが返されます。次に、php が対応する表示を行います。拡張機能を介して Java と連携する必要はありません

最後に返信を待ちました、よろしくお願いします~

もっと詳しく説明してもらえますか、または簡単な例を挙げてもらえますか?

私もこの問題に遭遇しました。投稿者または他の人が解決策を持っている場合は、QQ784718085 に連絡するか、メールを送っていただけますか

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。