日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

用PHP調(diào)用Lucene包來實現(xiàn)Lucene

 Ralf_Jones 2006-05-15

作者:張杰
URL:http://spaces./members/newbdez33/
http://www./



由于工作需要,需要使用PHP實現(xiàn)對網(wǎng)站內(nèi)大量數(shù)量進行全文檢索,
而且目前最流行的全文檢索的搜索引擎庫就是Lucene了,
它是Apache Jakarta的一個子項目,并且提供了簡單實用的API,
用這些API,就可以對任何基本文本的數(shù)據(jù)(包括數(shù)據(jù)庫)進行全文檢索。


因為PHP本身就支持調(diào)用外部Java類,所以先用Java寫了一個類,
這個類通過調(diào)用Lucene的API,實現(xiàn)了兩個方法: 

  • public String createIndex(String indexDir_path,String dataDir_path)
  • public String searchword(String ss,String index_path)

 其中createIndex是創(chuàng)建索引方法,
傳入了兩個參數(shù)分別是indexDir_path(索引文件的目錄),dataDir_path(被索引的文件目錄),返回被索引的文件列表字符串,
另一個是searchword,通過傳入的關(guān)鍵字參數(shù)(ss)對索引進行檢索,index_path就是索引文件的目錄。返回所有檢索到的文件。

 這里是源代碼,很簡單,大家可以參考一下:TxtFileIndexer.java

而PHP程序就調(diào)用這兩個方法,實現(xiàn)對Lucene的調(diào)用,從而達到全文檢索的目的。
PHP的調(diào)用方法如下: 
先創(chuàng)建一個我們寫的TxtFileIndexer類的實例,

    $tf = new Java(‘TestLucene.TxtFileIndexer‘);

然后就按正常PHP類的調(diào)用方法的方式進行調(diào)用,首先創(chuàng)建索引:

    $data_path = "F:/test/php_lucene/htdocs/data/manual";  //定義被索引內(nèi)容的目錄
    $index_path = "F:/test/php_lucene/htdocs/data/search";  //定義生成的索引文件存放目錄
    $s = $tf->createIndex($index_path,$data_path);  //調(diào)用Java類的方法
    print $s;  //打印返回的結(jié)果

這次再試試檢索:

    $index_path = "F:/test/php_lucene/htdocs/data/search";  //定義生成的索引文件存放目錄
    $s = $tf->searchword("here is keyword for search",$index_path);
    print $s;

另外要注意Java類的路徑,可以在PHP里設置

    java_require("F:/test/php_lucene/htdocs/lib/");  //這是個例子,我的類和Lucene都放到這個目錄下

這樣就可以了,是不是很簡單。

PHP源代碼:test.php


接下來我把環(huán)境配置說一下,
首先需要有Java SDK,是必須的,我使用的是1.4.2版的,其它版本應該也沒問題。
PHP5,試過PHP4,應該可以。

由于PHP5帶的Java擴展沒調(diào)通,并且以前用過調(diào)用Java效率很低,很慢,所以使用了 Php/Java Bridge 這個項目。

1.下載JavaBridge
URL:http:///projects/php-java-bridge/
目前版本是
php-java-bridge_3.0.8_j2ee.zip

解包后把
JavaBridge\WEB-INF\cgi\java-x86-windows.dll
JavaBridge\WEB-INF\lib\JavaBridge.jar
復制到 c:\php\ext 目錄下,并把
java-x86-windows.dll 改名為 php_java.dll


2.修改php.ini(例)
extension=php_java.dll

[Java]
java.class.path = "C:\php\ext\JavaBridge.jar;F:\test\php_lucene\htdocs"
java.java_home = "C:\j2sdk1.4.2_10"
java.library.path = "c:\php\ext;F:\test\php_lucene\htdocs"

3.重啟Apache即可。

4.可以找一些文件進行索引
在test.php里可以修改索引文件和數(shù)據(jù)文件的路徑。
TxtFileIndexer.java的37行限制了只索引html后綴的文件,有需要也可以修改。

根據(jù)目前的情況(JavaBridge支持Linux和Freebsd),完全可以在
linux或freebsd/apache2/php4/lucene/JavaBridge
環(huán)境下運行。


[返回]

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多