现在的位置: 首页 > 综合 > 正文

Lucene建立索引的四种类型

2013年05月21日 ⁄ 综合 ⁄ 共 1073字 ⁄ 字号 评论关闭

Lucene提供四种不同类型的索引方法,分别是Keyword,UnIndexed,UnStored和Text,用户可以根据需要来选择合适的类型。

下表详细说明了每种索引类型的用途和特点:

 

在实际的应用设计中,Lucene的介入通常是为了优化关系数据库中相关数据的检索速度和耗费。Lucene的API接口设计的比较通用,输入输出结构都很像数据库的“表—>记录—>字段”,如果系统的待索引数据是来自数据库中的表,使用起来也非常方便。

例如:系统索引管理模块接收来的待索引的数据,来自建立索引时数据库中生成的一个临时表,一共有六个字段,分别是:

id ElementName ElementValue end level DocId

对 这六个字段中的ElementName创建关键字索引,这个索引类似于Lore系统中的PathIndex;对ElementValue字段创建全文索 引,这个索引类似于Lore系统中的TextIndex。系统的检索功能即是根据这两种索引来实现的。更新的操作是通过先删除再添加实现的。

本系统对待处理数据建立的索引如下:

1,id,end和level是不需要索引只需要保存的,对这三个字段我们采用Field.UnIndexed,不索引,只存储。

2,ElementName,即XML文档中元素名的索引,我们采用Field.Keyword,不切分词,索引并存储。

3,ElementValue,也就是XML文档中元素值的索引,我们采用Field.Text(String name, Reader value),切分词索引不存储,不用于返回显示,但需要进行检索内容,对索引内容不存储可以节省空间。

4,DocId字段是用来对应元数据记录的标识符,当元数据记录修改或删除时,需要通过这个字段来对索引进行更新,所以这个字段采用Field.Keyword,不切分词,索引并存储。

待所有数据处理完后,删除数据库中的临时表。

后续数据的添加,更新和删除操作,在记录一级上的处理是直接操作数据库,对数据库进行添加、更新和删除操作。

但是在元素(Element)一级,即索引的添加,更新与删除则需要特殊处理。Lucene提供索引的添加与删除操作,添加索引的过程与创建索引是一样的,通过Lucene提供的接口向原索引文件中添加一条信息。

删除元数据时需要多一个步骤,上文提到创建索引时对DocId创建关键字索引,删除索引时就需要用到这个索引文件了,根据从数据处理器传来的DocId,查找DocId对应的所有的索引条目,然后删除这些索引条目。

更新的操作是通过先删除再添加实现的。

抱歉!评论已关闭.