您的位置:首页 > 运维架构 > 网站架构

php中调用lucene实现网站的全文检索

2008-11-27 09:30 405 查看
公司网站要实现全文检索,目前php中有sphnix和zendframework中的lucene可以实现全文检索。经过实践发现sphnix不够稳定,而zf中的lucene基本上只算是个玩具,没法在实践中使用。经过实验,发现可以用lucene(java)实现全文检索功能,然后在php中调用。

一、java lucene实现全文检索
1、下载lucene http://dev.xiaonei.com/apache-mirror/lucene/java/ 2、下载完成后,搭建java环境,具体请google相关文章。
3、按照lucene文档,将数据库中的数据转换为lucene本地索引(具体过程会单写一篇文章)
4、建立SearchEnginne文件,search(String keyword)方法实现实现全文检索(全文检索里很重要的一个问题是中文分词,可以使用lucene默认的分词方式,也可以自己实现)
5、最后将项目export成一个jar文件(lucene.jar)
二、php调用lucene.jar(目前只实现了windows平台下的调用,linux平台下的调用等实践完成后再附上)
最后就剩下php调用了。要在php中调用java,需要借用转换工具php-java-bridge
1、下载php-java-bridge(http://php-java-bridge.sourceforge.net/pjb/)
2、解压缩php-java-bridge后进入php-java-bridge,再解压缩javabridge.war到javabridge.
3、在apache的web目录下新建一个目录websearch,复制php-java-bridge/javabridge下的java及WEB-INF目录到websearch
4、复制前面生成的lucene.jar到websearch
5、新建lucene.php
<?php
require_once("java/java.inc");
java_require("$webroot/websearch/lucene.jar");

auto_load();

$keyvalue = $_GET["key"]; //搜索关键字
if($keyvalue == "")
{
exit();
}

$search = new Java("SearchEnginne"); //创建全文检索对象
$result = java_values($search->search("$keyvalue")); //得到全文检索结果

?>
6、运行websearch/WEB-INF/lib/javabridge.jar,选择localhost:8080点击确定
7、运行lucene.php,即可看到全文检索的结果

以上是个人体会,如有不妥,希望高手交流指正
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: