由于工作需要,需要使用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

解包后把

JavaBridgeWEB-INFcgijava-x86-windows.dll

JavaBridgeWEB-INFlibJavaBridge.jar

复制到 c:phpext 目录下,并把

java-x86-windows.dll 改名为 php_java.dll

2.修改php.ini(例)

extension=php_java.dll

[Java]

java.class.path = "C:phpextJavaBridge.jar;F:testphp_lucenehtdocs"

java.java_home = "C:j2sdk1.4.2_10"

java.library.path = "c:phpext;F:testphp_lucenehtdocs"

3.重启Apache即可。

4.可以找一些文件进行索引

在test.php里可以修改索引文件和数据文件的路径。

TxtFileIndexer.java的37行限制了只索引html后缀的文件,有需要也可以修改。

根据目前的情况(JavaBridge支持Linux和Freebsd),完全可以在

linux或freebsd/apache2/php4/lucene/JavaBridge

环境下运行。

http://www.bkjia.com/PHPjc/486089.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/486089.htmlTechArticle由于工作需要,需要使用PHP实现对网站内大量数量进行全文检索, 而且目前最流行的全文检索的搜索引擎库就是Lucene了, 它是Apache Jakart...

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

php lucene索引,用PHP调用Lucene包来实现全文检索_PHP教程相关推荐

  1. lucene php,用PHP调用Lucene包来实现全文检索_php

    由于工作需要,需要使用php实现对网站内大量数量进行全文检索, 而且目前最流行的全文检索的搜索引擎库就是Lucene了, 它是Apache Jakarta的一个子项目,并且提供了简单实用的API, 用 ...

  2. mysql lucene 索引区别_MySQL和Lucene索引对比分析

    MySQL和Lucene都可以对数据构建索引并通过索引查询数据,一个是关系型数据库,一个是构建搜索引擎(Solr.ElasticSearch)的核心类库.两者的索引(index)有什么区别呢?以前写过 ...

  3. lucene索引搜索_Lucene –快速添加索引和搜索功能

    lucene索引搜索 什么是Lucene? Apache LuceneTM是完全用Java编写的高性能,功能齐全的文本搜索引擎库. 它是一项适用于几乎所有需要全文本搜索的应用程序的技术,尤其是跨平台. ...

  4. 深入 Lucene 索引机制

    简介: Lucene 是一个基于 Java 的全文检索工具包,你可以利用它来为你的应用程序加入索引和检索功能.Lucene 目前是著名的 Apache Jakarta 家族中的一个开源项目,下面我们即 ...

  5. lucene索引并搜索mysql数据库[转]

    由于对lucene比较感兴趣,本人在网上找了点资料,终于成功地用lucene对mysql数据库进行索引创建并成功搜索,先总结如下: 首先介绍一个jdbc工具类,用于得到Connection对象: [j ...

  6. 影响Lucene索引速度原因以及提高索引速度技巧

    在网上看了一篇外文文章,里面介绍了提高Lucene索引速度的技巧,分享给大家. 先来看下影响索引的主要因素: MaxMergeDocs 该参数决定写入内存索引文档个数,到达该数目后就把该内存索引写入硬 ...

  7. lucene索引文件格式

    学习lucene索引文件格式的目的是通过对lucene数据结构的理解,从而为lucene索引实现打下基础. 索引文件的整体结构 如下图,这是整个索引文件的整体结构,可以看到,实际上lucene索引保存 ...

  8. solr调用lucene底层实现倒排索引源码解析

    1.什么是Lucene? 作为一个开放源代码项目,Lucene从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用, ...

  9. Lucene学习总结之四:Lucene索引过程分析

    对于Lucene的索引过程,除了将词(Term)写入倒排表并最终写入Lucene的索引文件外,还包括分词(Analyzer)和合并段(merge segments)的过程,本次不包括这两部分,将在以后 ...

最新文章

  1. DHCP欺骗(DHCP Sproofing)
  2. 多线程:并发实现方法之J.U.C
  3. unittest单元测试框架—加载测试用例的3种方法以及测试报告存储管理
  4. 【Python】Flask框架系列(二):安装、配置文件、增删改查
  5. html5 --- 使用javascript脚本控制媒体播放
  6. 使用 Intellij Idea 打包 java 工程为可执行 jar 包
  7. 河北软件职业技术学院计算机专业分数线,河北软件职业技术学院历年分数线 2021河北软件职业技术学院录取分数线...
  8. java 类集合_java集合类详解
  9. 【BZOJ1854】【codevs3358】游戏,二分图最大匹配
  10. win10安装rqalpha开源回测框架
  11. asp.net 大文上传配置
  12. 洛奇英雄转无法读取游戏服务器状态,洛奇英雄传无法连接服务器认证失败处理方法讲解...
  13. python集合的练习
  14. window.onscroll页面滚动条滚动事件
  15. 前端ES6+基础总结
  16. opensuse leap 42.3安装网易云音乐
  17. 如何将密切好友的微信聊天记录恢复到自己的微信中
  18. shiny导出html,将R Shiny页面导出为PDF
  19. rm -rf是什么意思?
  20. tradeblazer mysql_干货 | 用tradeblazer实现海龟交易法则(附代码)

热门文章

  1. 论文阅读:Multi-scale orderless pooling of deep convolutional activation features
  2. [云炬创业学笔记]第二章决定成为创业者测试7
  3. [MATLAB粒子模拟笔记]归一化输入系数
  4. TypeError: 'function' object is not subscriptable
  5. golang中的flag模块小结
  6. VTK修炼之道39:图像平滑_各向异性滤波
  7. 主成分分析(PCA)深入剖析+Matlab模拟
  8. 大数据可视化软件//完美的SCI配图
  9. c++/cli中app.config
  10. PL0编译器TurboPascal版再现时间:2009-07-20 17:24:49来源:网络 作者:未知 点击:52次