03.Lucene中的常用类
Document
Document是文档或者数据的抽象,它包含很多的Field域对象(可以重复),最终是要被持久化保存到索引库中的
Field
Lucene中的域对象,是对原始数据的切割,如:文件名,文件内容,文件大小等。域对象可以指定是否分词,是否索引和是否存储。不分词则会以一个完整的字段出现在索引中(如:商品id、订单号、身份证号等);不索引则不会被检索到,那么分词也没有了意义,但是可以存储(如:文件路径、图片路径等,不用作为查询条件的不用索引);不存储也可以被检索到,这取决于这个Field的内容是否需要被展示(如:大段的简介,长文本信息)。
Lucene不建议我们手动的决定Field的特性,而是封装好了一些域对象给我们
IndexWriter
IndexWriter是索引过程的核心组件,通过IndexWriter可以创建新索引、更新索引、删除索引操作。
Directory
Directory描述了索引的存储位置,底层封装了I/O操作,负责对索引进行存储。它的子类常用的包括FSDirectory(在文件系统存储索引)、RAMDirectory(在内存存储索引)。
IndexSearcher和IndexReader
通过IndexSearcher执行搜索,构建IndexSearcher需要IndexReader读取索引目录
TopDocs
Lucene搜索结果可通过TopDocs遍历,TopDocs类提供了少量的属性:搜索结果条数和一个包含Document在索引库中id的数组。通过遍历这个数组可以得到具体的文本对象。
Analyzer
Analyzer是一个抽象类,它是Lucene的分析器,可以对Field进行分词处理,并且生成词汇单元来建立索引。在非精确搜索时也需要对搜索关键字进行分词处理。Lucene自带的分析器对中文的支持不是很好,因此我们多使用第三方的分析器。