在Oracle官网下载符合系统版本的压缩包,网址如下。点击安装,根据提示进行安装,在安装过程中会提示是否安装jre,点击是。
2.设置环境变量:(1)右键计算机=》属性=》高级系统设置=》环境变量=》系统变量=》新建=》JAVA_HOME:安装路径
(2)Path中新增=》%JAVA_HOME%\bin
3.测试是否成功:开始=》运行=》CMD 回车 在弹出的 DOS 窗口内
输入:java -version 会出现版本信息,
输入: javac出现 javac 的用法信息
出现如图2-1所示为成功。
图2-1:cmd命令框测试java配置
3 编写Java代码实现对网页内容的获取因为Lucene针对不同语言要使用不同的分词器,英文使用标准分词器,中文选择使用smartcn分词器。在获取网页的时候,先获取网页存为html文件,在html中由于标签 的干扰,会对检索效果产生影响,因此需要对html标签进行剔除,并将文本内容转为txt文件进行保存。中英文除了分词器不同,其他基本一致,因此之后的代码和实验结果演 示会选择任一。本文选取五十篇中文故事和英文故事的网页为例。
具体代码设计如下图:Url2Html.java将输入网址的网页转存为html文件,Html2Txt.java文件实现html文档标签的去除,转存为txt文档。具体代码如图3-1和3-2。
public void way(String filePath,String url) throws Exception{ File dest = new File(filePath);//建立文件 InputStream is;//接收字节输入流 FileOutputStream fos = new FileOutputStream(dest);//字节输出流 URL wangzhi = new URL(url);//设定网址URL is = wangzhi.openStream(); BufferedInputStream bis = new BufferedInputStream(is);//为字节输入流加缓冲 BufferedOutputStream bos = new BufferedOutputStream(fos);//为字节输出流加缓冲 /* * 对字节进行读取 */ int length; byte[] bytes = new byte[1024*20]; while((length = bis.read(bytes, 0, bytes.length)) != -1){ fos.write(bytes, 0, length); } /* * 关闭缓冲流和输入输出流 */ bos.close(); fos.close(); bis.close(); is.close(); }
public String getBody(String val){
String zyf = val.replaceAll("</?[^>]+>", ""); //剔出<html>的标签
return zyf;
}
public void writeTxt(String Str,String writePath) {
File writename = new File(writePath);
try {
writename.createNewFile();
BufferedWriter out = new BufferedWriter(new FileWriter(writename));
�� out.write(Str);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
以童话故事《笨狼上学》的网页为例,文档路径设为”E:\work \lucene \test \data \html”和”E:\work\lucene\test\data\txt”,在每一次读取网页的时候需要设定的两个参数为文件命名filename和获取目标网址url。新建一个main函数,实现对两个方法的调用。具体实现如图3-3所示:
public static void main(String[] args) {
String filename = "jingdizhi";//文件名字
String url = "http://www.51test.net/show/8072125.html";//需要爬取的网页url
String filePath = "E:\\work\\lucene\\test\\data\\html\\"+filename+".html";//写出html的文件路径+文件名
String writePath = "E:\\work\\lucene\\test\\data\\txt\\"+filename+".txt";//写出txt的文件路径+文件名
Url2Html url2html = new Url2Html();
try {
url2html.way(filePath,url);
} catch (Exception e) {
e.printStackTrace();
}
Html2Txt html2txt = new Html2Txt();
String read=html2txt.readfile(filePath);//读取html文件
String txt = html2txt.getBody(read);//去除html标签
System.out.println(txt);
try {
html2txt.writeTxt(txt,writePath);
} catch (Exception e) {
e.printStackTrace();
}
}
执行程序后,分别在两个文件夹中建立”笨狼上学.html”和”笨狼上学.txt”。
4 建立索引索引和查询的基本原理如下: