快速业务通道

Lucene:基于Java的全文检索引擎简介 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20

Lucene:基于Java的全文检索引擎简介(4)

时间:2011-01-30 chedong

简单的例子演示一下Lucene的使用方法:

索引过程:从命令行读取文件名(多个),将文件分路径(path字段)和内容(body字段)2个字段进行存储,并对内容进行全文索引:索引的单位是Document对象,每个Document对象包含多个字段Field对象,针对不同的字段属性和数据输出的需求,对字段还可以选择不同的索引/存储字段规则,列表如下:

方法 切词 索引 存储 用途
Field.Text(String name, String value) Yes Yes Yes 切分词索引并存储,比如:标题,内容字段
Field.Text(String name, Reader value) Yes Yes No 切分词索引不存储,比如:META信息, 不用于返回显示,但需要进行检索内容
Field.Keyword(String name, String value) No Yes Yes 不切分索引并存储,比如:日期字段
Field.UnIndexed(String name, String value) No No Yes 不索引,只存储,比如:文件路径
Field.UnStored(String name, String value) Yes Yes No 只全文索引,不存储

public class IndexFiles {  //使用方法:: IndexFiles [索引输出目录] [索引的文件列表] ...  public static void main(String[] args) throws Exception {   String indexPath = args[0];   IndexWriter writer;   //用指定的语言分析器构造一个新的写索引器(第3个参数表示是否为追加索引)   writer = new IndexWriter(indexPath, new SimpleAnalyzer(), false);   for (int i=1; i<args.length; i++) {    System.out.println("Indexing file " + args[i]);    InputStream is = new FileInputStream(args[i]);    //构造包含2个字段Field的Document对象    //一个是路径path字段,不索引,只存储    //一个是内容body字段,进行全文索引,并存储    Document doc = new Document();    doc.add(Field.UnIndexed("path", args[i]));    doc.add(Field.Text("body", (Reader) new InputStreamReader(is)));    //将文档写入索引    writer.addDocument(doc);    is.close();   };   //关闭写索引器   writer.close();  } }

索引过程中可以看到:

语言分析器提供了抽象的接口,因此语言分析(Analyser)是可以定制的,虽然lucene缺省提供了2个比较通用的分析器SimpleAnalyser和StandardAnalyser,这2个分析器缺省都不支持中文,所以要加入对中文语言的切分规则,需要修改这2个分析器。

Lucene并没有规定数据源的格式,而只提供了一个通用的结构(Document对象)来接受索引的输入,因此输入的数据源可以是:数据库,WORD文档,PDF文档,HTML文档……只要能够设计相应的解析转换器将数据源构造成成Docuement对象即可进行索引。

对于大批量的数据索引,还可以通过调整IndexerWrite的文件合并频率属性(mergeFactor)来提高批量索引的效率。

检索过程和结果显示:

搜索结果返回的是Hits对象,可以通过它再访问Document==>Field中的内容。

假设根据body字段进行全文检索,可以将查询结果

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号