Lucene入门与使用(二) [转]

本文主要介绍Lucene的索引接口。包括分析器Analyzer,可筛选文档,有不同类型且可自定义;IndexWriter,其构造函数有三种接口,索引结束需合并优化;还介绍了org.apache.lucene.document下的Document和Field类,说明了它们的构造及特性。

4.1 Lucene的索引接口


 在学习索引的时候,首先需要熟悉几个接口:


4.1.1分析器Analyzer


        分析器主要工作是筛选,一段文档进来以后,经过它,出去的时候只剩下那些有用的部分,其他则剔除。而这个分析器也可以自己根据需要而编写。
        org.apache.lucene.analysis.Analyzer:这是一个虚构类,以下两个借口均继承它而来。


        org.apache.lucene.analysis.SimpleAnalyzer:分析器,支持最简单拉丁语言。


        org.apache.lucene.analysis.standard.StandardAnalyzer:标准分析器,除了拉丁语言还支持亚洲语言,并在一些匹配功能上进行完善。在这个接口中还有一个很重要的构造函数:StandardAnalyzer(String[] stopWords),可以对分析器定义一些使用词语,这不仅可以免除检索一些无用信息,而且还可以在检索中定义禁止的政治性、非法性的检索关键词。


4.1.2 IndexWriter


        IndexWriter的构造函数有三种接口,针对目录Directory、文件File、文件路径String三种情况。
例如IndexWriter(String path, Analyzer a, boolean create),path为文件路径,a为分析器,create标志是否重建索引(true:建立或者覆盖已存在的索引,false:扩展已存在的索引。)
       一些重要的方法:

接口名

备注

addDocument(Document doc)

索引添加一个文档

addIndexes(Directory[] dirs)

将目录中已存在索引添加到这个索引

addIndexes(IndexReader[] readers)

将提供的索引添加到这个索引

optimize()

合并索引并优化

close()

关闭


       IndexWriter为了减少大量的io维护操作,在每得到一定量的索引后建立新的小索引文件(笔者测试索引批量的最小单位为10),然后再定期将它们整合到一个索引文件中,因此在索引结束时必须进行wirter. optimize(),以便将所有索引合并优化。


4.1.3 org.apache.lucene.document


 以下介绍两种主要的类:
 a)org.apache.lucene.document.Document:
        Document文档类似数据库中的一条记录,可以由好几个字段(Field)组成,并且字段可以套用不同的类型(详细见b)。Document的几种接口:
 

接口名

备注

add(Field field)

添加一个字段(Field)到Document

String get(String name)

从文档中获得一个字段对应的文本

Field getField(String name)

由字段名获得字段值

Field[] getFields(String name)

由字段名获得字段值的集


 b)org.apache.lucene.document.Field
        即上文所说的“字段”,它是Document的片段section。
        Field的构造函数:
       Field(String name, String string, boolean store, boolean index, boolean token)。
        Indexed:如果字段是Indexed的,表示这个字段是可检索的。
        Stored:如果字段是Stored的,表示这个字段的值可以从检索结果中得到。
        Tokenized:如果一个字段是Tokenized的,表示它是有经过Analyzer转变后成为一个tokens序列,在这个转变过程tokenization中,Analyzer提取出需要进行索引的文本,而剔除一些冗余的词句(例如:a,the,they等,详见org.apache.lucene.analysis.StopAnalyzer.ENGLISH_STOP_WORDS和org.apache.lucene.analysis.standard.StandardAnalyzer(String[] stopWords)的API)。Token是索引时候的基本单元,代表一个被索引的词,例如一个英文单词,或者一个汉字。因此,所有包含中文的文本都必须是Tokenized的。

转载于:https://www.cnblogs.com/xiaoqiao/archive/2005/05/12/154230.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值