承接上次的txt文本索引,Lucene操作很固定化,看看源码其实就是很好的学习过程,在这跟大家分享基本的搜索方法实现,之后对索引和搜索方法会写些复杂点的操作给大家,这个可以作为一个入门和兴趣培养啊,哪里不懂google搜索一下几分钟就能看懂:
package testLucene;
import java.util.Date;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
public class Search {
private IndexSearcher search=null;
private Query query=null;
//搜索关键字方法 返回Hits
public final Hits SearchKeyword(String keyword){
System.out.println("正在搜索关键字:"+keyword);
try{
query=QueryParser.parse(keyword, "contents", new StandardAnalyzer());
Date start=new Date();
Hits hits=search.search(query);
Date end=new Date();
System.out.println("检索用时:"+(end.getTime()-start.getTime())+"毫秒");
return hits;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
//构造函数 初始化search
public Search(){
try{
search=new IndexSearcher(IndexReader.open(Constants.Index_Store_Path));
}catch(Exception e){
e.printStackTrace();
}
}
//输出Hits的结果
public void printResult(Hits h){
if(h.length()==0){
System.out.println("对不起,没有找到搜索结果");
}else{
for(int i=0;i<h.length();i++){
try{
Document doc=h.doc(i);
System.out.print("这是第"+i+"个搜索到的结果,文件名为:");
System.out.println(doc.get("path"));
}catch(Exception e){
e.printStackTrace();
}
}
}
System.out.println();
}
//main方法 使用上述方法,实现此次搜索
public static void main(String[] args){
Search sea=new Search();
Hits h=null;
//检索“叫做”
h=sea.SearchKeyword("叫做");
sea.printResult(h);
//检索“文件”
h=sea.SearchKeyword("文件");
sea.printResult(h);
//检索“新建”
h=sea.SearchKeyword("新建");
sea.printResult(h);
//检索“我”
h=sea.SearchKeyword("我");
sea.printResult(h);
}
}
其中上次四次文件的内容分别是:
a.txt:我新建的文件叫做a
b.txt:新建的文件叫做b
c.txt:文件叫做c
d.txt:叫做d
运行结果:
正在搜索关键字:叫做
检索用时:110毫秒
这是第0个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\d.txt
这是第1个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\c.txt
这是第2个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\a.txt
这是第3个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\b.txt
正在搜索关键字:文件
检索用时:15毫秒
这是第0个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\c.txt
这是第1个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\a.txt
这是第2个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\b.txt
正在搜索关键字:新建
检索用时:0毫秒
这是第0个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\a.txt
这是第1个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\b.txt
正在搜索关键字:我
检索用时:16毫秒
这是第0个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\a.txt
分享到:
相关推荐
为了快速查询,加快查询速度,减少与数据库交互,经常需要用到lucene实现创建索引和查询
基于lucene技术的增量索引,实现索引的首次创建,动态增删改
Lucene 删除 合并索引,可以指定几个索引文件合并成一个索引文件。自己写的,有很多不足之处请多指教
这是Lucene3.0索引查看文件 直接运行jar包就可以打开ui界面 陪好路径就可以使用了
Lucene创建索引,查询索引的简单使用。
Lucene实现索引和查询的实例讲解Lucene实现索引和查询的实例讲解
Lucene之删除索引 Lucene之删除索引 Lucene之删除索引 http://blog.csdn.net/nupt123456789/article/details/10666105
Lucene3.0创建索引 读取目录下的所有txt文档格式的文件,然后生成一个索引文件到某目录下!
lukeall,Lucene索引文件查看工具可支持Lucene4.7版本的索引查看,直接双击打开,选择索引目录进行使用
lucene 对 xml建立索引 建立索引就是怎么简单 呵呵
基于lucene 2.4简单的一个索引和搜索实例
Lucene索引器实例Lucene索引器实例Lucene索引器实例Lucene索引器实例
luke源码--查看lucene索引文件
NULL 博文链接:https://cxl2012.iteye.com/blog/2233035
lucene索引查看工具及源码lucene索引查看工具及源码lucene索引查看工具及源码
lucene索引文件格式介绍,很详细,每一个文件都解释了,一目了然,做项目用的
lucene与sqlserver数据库实现索引的简单实例lucene与sqlserver数据库实现索引的简单实例
lucene+zoie近实时索引demo lucene+zoie近实时索引demo
最简单的Lucene建立、搜索索引的方法,工程基于Myeclipse10
lucene.net 2.9.2 实现索引生成,修改,查询,删除实例