Lucene教程详解.docx
《Lucene教程详解.docx》由会员分享,可在线阅读,更多相关《Lucene教程详解.docx(28页珍藏版)》请在冰豆网上搜索。
Lucene教程详解
Lucene教程详解
Lucene-3.0.0配置
一、Lucene开发环境配置
step1.Lucene开发包下载
step2.Java开发环境配置
step3.Tomcat安装
step4.Lucene开发环境配置
解压下载的lucene-3.0.0.zip,可以看到lucene-core-3.0.0.jar和lucene-demos-3.0.0.jar这两个文件,将其解压(建议放在安装jdk的lib文件夹内),并把路径添加到环境变量的classpath。
二、Lucene开发包中Demo调试
控制台应用程序
step1.建立索引
>javaorg.apache.lucene.demo.IndexFiles[C:
\Java](已经存在的任意文件路径)
将对C:
\Java下所有文件建立索引,同时,在当前命令行位置将生成“index”文件夹。
step2.执行查询
>javaorg.apache.lucene.demo.SearchFiles
将会出现“Query:
”提示符,在其后输入关键字,回车,即可得到查询结果。
Web应用程序
step1.将lucene-core-3.0.0.jar和lucene-demos-3.0.0jar这两个文件复制到安装Tomcat的\common\lib中
step2.解压下载的lucene-3.0.0.zip,可以看到luceneweb.war文件。
将该文件复制到安装Tomcat的\webapps
step3.重启Tomcat服务器。
step4.建立索引
>javaorg.apache.lucene.demo.IndexHTML-create-index[索引数据存放路径][被索引文件路径](如:
D:
\lucene\temp\indexD:
\lucene\temp\docs)
step5.打开安装Tomcat的\webapps\luceneweb\configuration.jsp文件,找到StringindexLocation="***",将"***"改为第四步中[索引数据存放路径],保存关闭。
step6.执行查询
http:
//localhost:
8080/luceneweb
在文本框中输入关键字,执行,即可得到查询结果。
说明:
本文采用lucene-3.0.0版本,运行step6时查询报错,根据提示将安装Tomcat的webapps\luceneweb\results.jsp中
[QueryParserqp=newQueryParser("contents",analyzer);]修改为
[QueryParserqp=newQueryParser(Version.LUCENE_CURRENT,"contents",analyzer);]
注:
本文参考YM'shouse
lucene的demo环境搭建
总结一下lucene的环境搭建,查看以及了解lucene的原理,对其有个大概的了解。
1、下载lucene2.3.2
地址:
2、下载jdk1.6
3、下载tomcat
下载以上内容完成后,开始安装。
1、安装jdk
一路确定下去,无需选择。
2、安装tomcat
一路确定下去,无需选择。
3、解压文件即可
假设解压文件路径为d:
\lucene\
现在可以建立目录(此处的目录为我们要进行检索的信息的原始数据文件,我们放置在docs中,还有一个是lucene生成的检索信息,我们放置于index中),即可以在d:
\lucene下建立一个temp\docs以及temp\index,此处两个文件夹目录可以随意,当然不一定非得放置于d:
\lucene。
然后将需要检索的原始数据文件放置于docs文件夹中。
拷贝解压的lucene文件夹中的lucene-core-2.3.2.jar以及lucene-demos-2.3.2.jar到temp文件夹中,解压。
如果没有配置jdk环境,参考下方:
打开我的电脑-属性-高级-环境变量:
在系统变量中添加:
JAVA_HOMEC:
\ProgramFiles\Java\jdk1.6.0
PATH%JAVA_HOME%\bin
CLASSPATH.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\lib\rt.jar;
打开命令行:
将目录定位到temp文件夹。
输入命令:
javaorg.apache.lucene.demo.IndexHTML-create-indexD:
\lucene\temp\indexD:
\lucene\temp\docs
即建立索引与原始数据文件的关系。
完成后,会发现index文件夹中多处一部分数据,以后再研究。
然后找到tomcat的安装目录,拷贝lucene中的luceneweb.war进入tomcat的webapps\文件夹中,启动tomcat,会看见webapps\下多出一个文件夹,找到configuration.jsp文件,将其中的StringindexLocation="/opt/lucene/index";修改为StringindexLocation="D:
/lucene/temp/index";就是刚才生成的文件。
打开浏览器,输入http:
//127.0.0.1:
8080/luceneweb/
输入需要查询的信息,看看结果如何。
简单地说:
首先建立索引文件放置目录,cmd命令生成索引文件,部署工程,修改工程文件中目标为索引文件目录。
搜索引擎的组成
搜索引擎一般由搜索器、索引器、检索器和用户接口四个部分组成:
搜索器
其功能是在互联网中漫游,发现和搜集信息;
索引器
其功能是理解搜索器所搜索到的信息,从中抽取出索引项,用于表示文档以及生成文档库的索引表;
检索器
其功能是根据用户的查询在索引库中快速检索文档,进行相关度评价,对将要输出的结果排序,并能按用户的查询需求合理反馈信息;
用户接口
其作用是接纳用户查询、显示查询结果、提供个性化查询项。
d:
\lucene\index是上一篇学习笔记([Lucene3.0学习笔记1(建立索引)])中生成的索引文件的存放地址。
具体步骤简介如下:
1、创建Directory对象,索引文件夹
2、创建IndexSearch对象,建立查询(参数是Directory对象)
3、创建QueryParser对象(lucene版本,查询Field字段,所用分词器)
4、生成Query对象,由QueryParser对象的parse函数生成(参数是所查的关键字)
5、建立TopDocs对象(IndexSearch的search函数,参数是Query查询对象,)
6、TopDocs对象数组里存放查询信息
7、关闭IndexSearch
索引创建和搜索过程所一个总结
Lucene教程
Lucene是apache组织的一个用java实现全文搜索引擎的开源项目。
其功能非常的强大,api也很简单。
总得来说用Lucene来进行建立和搜索和操作数据库是差不多的(有点像),Document可以看作是数据库的一行记录,Field可以看作是数据库的字段。
用lucene实现搜索引擎就像用JDBC实现连接数据库一样简单。
Lucene2.0,它与以前广泛应用和介绍的Lucene1.4.3并不兼容。
Lucene2.0的下载地址是http:
//apache.justdn.org/lucene/java/
例子一:
1、在windows系统下的的C盘,建一个名叫s的文件夹,在该文件夹里面随便建三个txt文件,随便起名啦,就叫"1.txt","2.txt"和"3.txt"啦
其中1.txt的内容如下:
中华人民共和国
全国人民
2006年
而"2.txt"和"3.txt"的内容也可以随便写几写,这里懒写,就复制一个和1.txt文件的内容一样吧
2、下载lucene包,放在classpath路径中
建立索引:
package;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.util.Date;
importorg.apache.lucene.analysis.Analyzer;
importorg.apache.lucene.analysis.standard.StandardAnalyzer;
importorg.apache.lucene.document.Document;
importorg.apache.lucene.document.Field;
importorg.apache.lucene.index.IndexWriter;
/***//**
*authorlighterdate2006-8-7
*/
publicclassTextFileIndexer{
publicstaticvoidmain(String[]args)throwsException{
/**//*指明要索引文件夹的位置,这里是C盘的S文件夹下*/
FilefileDir=newFile("c:
//s");
/**//*这里放索引文件的位置*/
FileindexDir=newFile("c:
//index");
AnalyzerluceneAnalyzer=newStandardAnalyzer();//建立一个标准分析器
IndexWriterindexWriter=newIndexWriter(indexDir,luceneAnalyzer,
true);//创建一个索引器
File[]textFiles=fileDir.listFiles();
longstartTime=newDate().getTime();
//增加document到索引去
for(inti=0;iif(textFiles[i].isFile()
&&textFiles[i].getName().endsWith(".txt")){
System.out.println("File"+textFiles[i].getCanonicalPath()
+"正在被索引.");
Stringtemp=FileReaderAll(textFiles[i].getCanonicalPath(),
"GBK");
System.out.println(temp);
Documentdocument=newDocument();//Document是一个记录。
用来表示一个条目。
就是搜索建立的倒排索引的条目。
比如说,你要搜索自己电脑上的文件。
这个时候就可以创建field。
然后用field组合成document。
最后会变成若干文件。
这个document和文件系统document不是一个