lucene 学习笔记 (2007年较早版本)

本文深入探讨了Lucene的索引构建过程、关键组件及其优化策略,包括Document、Field、IndexWriter、Analyzer、Directory、Segment以及索引的建立、优化方法。通过实例分析,阐述了如何有效利用Lucene进行高效文本检索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. lucene的检索算法属于索引检索,即用空间来换取时间.
2. Document:一个要进行索引的单元,相当于数据库的一行纪录,任何想要被索引的数据,都必须转化为Document对象存放。
 Field:Document中的一个字段,相当于数据库中的Column ,Field是lucene比较多概念一个术语,详细见后。
 IndexWriter:负责将Document写入索引文件.

 Analyzer:分析器,主要用于文本分词。常用的有StandardAnalyzer分析器,StopAnalyzer分析器,WhitespaceAnalyzer分析器
 Directory: 索引存放的位置。lucene提供了两种索引存放的位置,一种是磁盘,一种是内存。一般情况将索引放在磁盘上;相应地   lucene提供了FSDirectory和RAMDirectory两个类。
 Segment: 是Lucene索引文件的最基本的一个单位。Lucene说到底就是不断加入新的Segment,然后按一定的规则算法合并不同的   Segment以合成新的Segment。

3. 特别注意的一点,当IndexWriter执行完addDocument方法后,一定要记得调用自身的close方法来关闭它。只 有在调用了close方法  后,索引器才会将存放在内在中的所有内容写入磁盘并关闭输出流。

4. lucene建立索引的过程就是将待索引的对象转化为Lucene的Document对象,使用IndexWriter将其写入lucene 自定义格式的索引文件  中。

5. 在Field当中有三个内部类:Field.Index,Field.Store,Field.termVector。
 Field.Index.TOKENIZED:分词索引
 Field.Index.UN_TOKENIZED:分词进行索引,如作者名,日期等,Rod Johnson本身为一单词,不再需要分词。
 Field.Index:不进行索引,存放不能被搜索的内容如文档的一些附加属性如文档类型, URL等.

 Field.Store.YES:索引文件本来只存储索引数据, 此设计将原文内容直接也存储在索引文件中,如文档的标题。
 Field.Store.NO:原文不存储在索引文件中,搜索结果命中后,再根据其他附加属性如文件的Path,数据库的主键等,重新连接打开    原文,适合原文内容较大的情况。 


6. 优化索引:可以使用IndexWriter类的optimize方法来进行优先,它会将多个Segment进行合并,组成一个新的Segment,可以加 快建立 索引后搜索的速度。另外需要注意的一点,optimize方法会降低建立索引的速度,而且要求的磁盘空间会增加。


7. 索引的建立:

 首先分别new 一个Document,IndexWriter,Field
 然后用Doument.add()方法加入Field,
 其次用IndexWrtier.addDocument()方法加入Document.
 最后调用一下IndexWriter.close()方法关闭输入索引.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值