zoukankan      html  css  js  c++  java
  • lucence搜索引擎框架教程

    资源:

    官方中文站:http://lucene.com.cn/

    因为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就是索引文件的目录。返回所有检索到的文件。

     这里是源代码,很简单,大家可以参考一下:[url=http://newbdez33.googlepages.com/TxtFileIndexer.java]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源代码:[url=http://newbdez33.googlepages.com/test.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/
    目前版本是
    [url=http://prdownloads.sourceforge.net/php-java-bridge/php-java-bridge_3.0.8_j2ee.zip?download]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
    环境下运行。

  • 相关阅读:
    uniApp 实现微信小程序和app视频播放flv格式视频监控
    uniapp 给子组件传值不及时显示
    uni-app 中$refs 在app中无法使用
    使用甘特图
    背景图片加蒙版,里面内容不受影响
    MyBatis 多对一操作
    在Maven项目中使用lombok
    MyBatis使用分页
    Log4j打印日志
    paramiko 下载文件
  • 原文地址:https://www.cnblogs.com/liuguanghuiyes/p/2026755.html
Copyright © 2011-2022 走看看