仓酷云

标题: PHP教程之用PHP挪用Lucene包来完成全文检索 [打印本页]

作者: 分手快乐    时间: 2015-2-4 00:10
标题: PHP教程之用PHP挪用Lucene包来完成全文检索
兴趣可能会慢慢消亡,所以适当培养兴趣会激发自己无线的乐趣,有了乐趣,编程有啥难的。全文检索   因为任务需求,需求利用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有一比啊!^_^,同是新手面临的第一道关。
作者: 莫相离    时间: 2015-2-4 09:49
实践是检验自己会不会的真理。
作者: 兰色精灵    时间: 2015-2-5 15:18
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
作者: 小妖女    时间: 2015-2-5 16:55
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者: 乐观    时间: 2015-2-10 03:40
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者: 仓酷云    时间: 2015-2-28 18:32
当然这种网站的会员费就几十块钱。
作者: 再见西城    时间: 2015-3-10 04:04
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
作者: 海妖    时间: 2015-3-11 01:40
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者: 第二个灵魂    时间: 2015-3-11 09:37
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
作者: 金色的骷髅    时间: 2015-3-16 15:29
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
作者: 透明    时间: 2015-3-17 12:10
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
作者: admin    时间: 2015-3-23 22:27
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者: 冷月葬花魂    时间: 2015-4-1 13:20
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者: 小魔女    时间: 2015-4-26 21:23
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
作者: 灵魂腐蚀    时间: 2015-4-28 09:32
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
作者: 若相依    时间: 2015-5-3 21:44
写的比较杂,因为我也是个新手,不当至于大家多多指正。
作者: 只想知道    时间: 2015-5-9 02:52
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
作者: 再现理想    时间: 2015-6-14 21:25
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
作者: 爱飞    时间: 2015-6-24 21:46
写的比较杂,因为我也是个新手,不当至于大家多多指正。
作者: 不帅    时间: 2015-7-3 01:03
Ps:以上纯属原创,如有雷同,纯属巧合




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2