`
BuN_Ny
  • 浏览: 82862 次
  • 来自: 济南
社区版块
存档分类
最新评论

4) 第一章 初识Lucene:理解核心索引类

阅读更多

 

 

1. IndexWriter

    IndexWriter是索引过程的核心组件。这个类用于创建新的索引文件或者打开一个已经存在的索引文件,之后,它负责增加、删除、更新对应文件中的document. 你可以把它理解成这样一个对象:它提供对索引文件的"写"操作,然而你不能通过它进行"读"和"搜索"操作。IndexWriter需要一个空间以存储索引文件,这正是Directory的作用。

 

2. Directory

    Directory类表示Lucene索引文件的位置。这是一个抽象类,它允许其子类按照适合的方式存储索引。Lucene主要提供了两种实现:FSDirectory(基于文件系统)和RAMDirectory(基于内存)。基于内存的策略更快捷,它在应用结束后即销毁索引,通常被用作单元测试。而合理的应用操作系统的IO缓存,可以弱化FSDirectory和RAMDirectory之间的性能差异。

 

3. Analyzer

    文本被索引之前,会被传入Analyzer进行处理。 Analyzer的具体实现类在IndexWriter的构造器中指出。它负责提取需要从文本中被索引的词元,并忽略掉其它不相关的。如果需要索引的内容不是纯文本,首先需要进行转换。Analyzer是个抽象类,然而Lucene为其提供了诸多实现。其中的一些实现负责跳过停词(一些不能用于区分文档的词,如a,an,this,in,又如"的"、"吗");另一些负责处理字母的大小写变化,这样一来,搜索的时候就可以做到大小写不敏感。Analyzer是Lucene的重要组成部分,它不仅被用于简单的输入过滤。当你在应用中使用Lucene时,Analyzer的选择通常是设计之初重要的一环。

 

4. Document

    Document用来代表域(Field)的集合。你可以把它想像成一个实际的文档,诸如一个网页、一封邮件、一个文本文档等。而Document的域(Fields)则是文档的元数据,诸如作者、标题、主题等。

    注意:Lucene只处理两种类型,java.lang.String 和 java.io.Reader. 原始数据的抽取工作需要你自己完成。

 

5. Field

    索引文件中的每个Document都包含了一个或多个Field. 每个Field由名称、对应的值及若干选项组成,这些选项用来精确地控制Lucene以何种方式索引Field中的值。

 

 

 

分享到:
评论
1 楼 zeng1990 2012-05-06  
有什么学习Lucene的好书推荐一下呗!你这个主题的文章是在是写的太好了。

相关推荐

Global site tag (gtag.js) - Google Analytics