php通过调用lucene库实现检索应用

这篇博客介绍了如何使用PHP通过调用Lucene库进行数据检索。首先,文章讲解了安装Java、Tomcat、PHP和Apache的过程,并配置相关环境变量。接着,数据从MySQL数据库中获取,Python爬虫抓取的数据以JSON格式存储。博客详细阐述了如何使用Java将JSON数据插入MySQL,并构建Lucene检索示例。最后,通过编写PHP服务文件test.php调用Lucene库实现检索功能,并给出了运行环境的启动步骤。
摘要由CSDN通过智能技术生成

php通过调用lucene库实现检索应用。注意为下面安装的php,tomcat,java,apache添加path路径。

被检索的数据存放在mysql数据库中,检索的数据是使用python从网络上爬取的,已存储为json格式,直接可以java读取插入数据库。

用到的jar包。
1、gson-2.2.1.jar(用户直接将json格式转化为java对象)
2、lucene-core-3.0.2.jar(lucene库)
3、mysql-connector-java-5.1.37-bin.jar (java连接mysql驱动库)
4、LuceneExample.jar(自己编写的使用Lucene的示例库)

第一步:
安装Java,配置好环境变量。将上面的jar包拷贝到java虚拟机运行环境jre\lib\ext目录下,这样在虚拟机运行时就会自动加载这些库了。

第二步:
安装tomcat,由于php调用java需要用到php-java-bridge,而下载下来的是JavaBridge.war,所以需要用tomcat来将下载的JavaBridge.war文件解析一下,具体方法为:将JavaBridge.war放在tomcat的webapps\目录,启动tomcat,此时tomcat会自动解析在webapps\下的JavaBridge.war,生产JavaBridge文件夹,将这个文件夹拷贝到第二步的apache运行目录。

第三步:
安装php,安装apache,将第一步中得到的JavaBridge文件夹拷贝到htdocs\目录。(JavaBridge文件夹里包含一些类似头文件的东西)

第四步:
环境已经基本建立好了,下面开始具体实施。
1、登录到mysql终端,利用SQL指令建立tiku数据库,建立math数据库表。
create database tiku;
use tiku;
create table math(index_num int(11) primary key not null auto_increment,question text not null,answer text);
建完表后可以 desc math; 查看一下。
2、终端中进入加载数据代码的目录D:\soft\yangyang\luc,数据文件为out.data,为json格式。
编译LoadData.java并执行,
javac LoadData.java
java LoadData
此时在终端中查看math数据库,即可看到数据已存入数据库表math中。
select * from math limit 2;
3、编译生产自己编写的使用Lucene的示例库
同样在上述目录中执行下面命令
javac LuceneExample.java 编译生成class文件
jar -cvf LuceneExample.jar LuceneExample.class 打包class文件
接着将LuceneExample.jar文件拷贝至上面说的jre\lib\ext目录下。
4、编写服务文件
进入apache运行目录htdocs\编写test.php文件来调用上面的LuceneExample.jar库实现检索。具体代码见附录

第五步:
开启服务环境,查看运行结果:
1、首先保证开启mysql服务,可以在cmd中运行命令 net start mysql
2、进入第三步的JavaBridge\WEB-INF\lib目录下,双击运行JavaBridge.jar程序(如果不运行,手动进入该目录开启java -jar JavaBridge.jar,选择8080端口,确定)
3、进入apache的bin目录下双击ApacheMonitor.exe开启apache服务。
4、此时在浏览器中输入http:\localhost\test.php即可看到查询结果(若为乱码,请修改编码方式为UTF-8)。

LoadData.java源码

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.FileInputStream;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;

import com.google.gson.Gson;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;


public class LoadData {
   
    public static void loadJson(String fileName){
        try{
            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "utf-8"));
            String data = br.readLine();
            Gson gson = new Gson();
            /*
            List<TiMu> tt = new ArrayList<TiMu>();
            tt.add(new TiMu("fff", "fsdfsd"));
            tt.add(new TiMu("444", "3333232"));
            System.out.println(gson.toJson(tt));
            */
            Type type = new TypeToken<List<TiMu>>(){}.getType();
            List<TiMu> ps = gson.fromJson(data, type);
            System.out.println(ps.toString());
            //JDBC Section
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/tiku", "root", "buptmm");
            String sql="insert into math(question,answer) values(?,?)";  
            PreparedStatement preStmt =conn.prepareStatement(sql);

            for(TiMu ti:ps){  
                preStmt.setString(1,ti.getQ());  
                preStmt.setString(2,ti.getA());
                preStmt.executeUpdate();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值