Lucene3.0全文检索入门实例

Lucene3.0和Lucene2.0API有多处改动,以下实例用Luence3.0实现。

 

 第一部分:Lucene建立索引
Lucene建立索引主要有以下两步:
第一步:建立索引器
第二步:添加索引文件
准备在E盘建立testlucene文件夹,然后在testlucene下建立文件夹test和index两个文件夹。
在test文件夹下建立如下四个txt文件
a.txt 内容:中华人民共和国
b.txt 内容:人民共和国
c.txt 内容:人民
d.txt 内容:共和国

这四个文件就是我们要建立索引的文件,
Index文件夹作为索引结果输出文件夹

准备工作完成以后,我们开始建立索引。
第一步:建立索引器,如下
writer = new IndexWriter(FSDirectory.open(new File(Constants.INDEX_STORE_PATH)), new StandardAnalyzer(
     Version.LUCENE_30), true, IndexWriter.MaxFieldLength.LIMITED);

第二步:添加索引文件
writer.addDocument(doc);


具体完整代码如下:
 

 

最后,执行程序,结果如下:
正在建立索引:E:/testlucene/test/a.txt
正在建立索引:E:/testlucene/test/b.txt
正在建立索引:E:/testlucene/test/c.txt
正在建立索引:E:/testlucene/test/d.txt
建立索引用时:47毫秒
在E:/testlucene/index下发现索引结果文件
_7.cfs segments.gen segments_9


第二部分:在索引上检索
在索引上搜索主要包括个步骤,使用两个对象—IndexSearcher和Query。
检索步骤:
第一步:创建索引器
searcher = new IndexSearcher(IndexReader.open(FSDirectory.open(new File(Constants.INDEX_STORE_PATH))));

第二步:将待检索关键字打包成Query对象
query = queryParser.parse(keyword);

第三步:使用索引器检索Query,得到检索结果Hits对象
TopDocs hits = searcher.search(query, 10);
最后,将检索到的结果Hits打印出来:
   for (int i = 0; i < hits.scoreDocs.length; i++) {
    try {
     ScoreDoc scoreDoc = hits.scoreDocs[i];// 有变化的地方
     Document doc = searcher.doc(scoreDoc.doc);// 有变化的地方
     System.out.print("这是第" + (i+1) + "个检索结果,文件路径为:");
     System.out.println(doc.get("path"));

    } catch (Exception ex) {

    }
全部程序如下:

在执行第一部分的程序得到索引后,执行搜索程序LuceneSearch,在控制台下得到结果如下:
(对比我们在f:/testlucene/test下的四个文件可知,检索结果正确)
正在搜素关键字:中华
搜索完毕用时:15毫秒
这是第1个检索结果,文件路径为:E:/testlucene/test/a.txt
--------------------------------
正在搜素关键字:人民
搜索完毕用时:0毫秒
这是第1个检索结果,文件路径为:E:/testlucene/test/c.txt
这是第2个检索结果,文件路径为:E:/testlucene/test/b.txt
这是第3个检索结果,文件路径为:E:/testlucene/test/a.txt
--------------------------------
正在搜素关键字:共和国
搜索完毕用时:0毫秒
这是第1个检索结果,文件路径为:E:/testlucene/test/d.txt
这是第2个检索结果,文件路径为:E:/testlucene/test/b.txt
这是第3个检索结果,文件路径为:E:/testlucene/test/a.txt
--------------------------------

总结
通过以上两篇文章我们看以看到使用lucene建立索引过程主要有一下4步:
1.提取文本
2.构建Document
3.分析
4.建立索引

 

完整的实例代码详见《lucene3.0全文检索入门实例

 

感谢《用lucene3开发的第一个简单搜索引擎》和《Lucene建立索引搜索入门实例

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值