|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
兴趣可能会慢慢消亡,所以适当培养兴趣会激发自己无线的乐趣,有了乐趣,编程有啥难的。全文检索 因为任务需求,需求利用PHP完成对网站内大批数目停止全文检索,
并且今朝最盛行的全文检索的搜刮引擎库就是Lucene了,
它是Apache Jakarta的一个子项目,而且供应了复杂适用的API,
用这些API,就能够对任何根基文本的数据(包含数据库)停止全文检索。
由于PHP自己就撑持挪用内部Java类,所以先用Java写了一个类,
这个类经由过程挪用Lucene的API,完成了两个办法:
public String createIndex(String indexDir_path,String dataDir_path)
public String searchword(String ss,String index_path)
个中createIndex是创立索引办法,
传入了两个参数分离是indexDir_path(索引文件的目次),dataDir_path(被索引的文件目次),前往被索引的文件列表字符串,
另外一个是searchword,经由过程传入的关头字参数(ss)对索引停止检索,index_path就是索引文件的目次。前往一切检索到的文件。
这里是源代码,很复杂,人人可以参考一下:TxtFileIndexer.java
而PHP法式就挪用这两个办法,完成对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("here is keyword for search",$index_path);
print $s;
别的要注重Java类的途径,可以在PHP里设置
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
解包后把
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里可以修正索引文件和数据文件的途径。
TxtFileIndexer.java的37行限制了只索引html后缀的文件,有需求也能够修正。
依据今朝的情形(JavaBridge撑持Linux和Freebsd),完整可以在
linux或freebsd/apache2/php4/lucene/JavaBridge
情况下运转。小试一下身手,大概是没问题了,那么交给你个任务,做个留言本吧,这和HELLO WORLD有一比啊!^_^,同是新手面临的第一道关。 |
|