Lucene 初始及简单介绍

在全文索引工具中,都是由3部分组成

1.索引部分

2.分词部分

3.搜索部分

 

建立索引的步骤

1.创建Directory

2.创建IndexWriter

3.创建Document对象

4.为Document添加Field

 

搜索操作的步骤:

1.创建Directory

2.创建IndexReader

3.根据IndexReader创建IndexSearcher

4.创建搜索的Query

5.根据Searcher搜索并且返回TopDocs

6.根据TopDocs获取ScoreDoc对象

7.根据Seacher和ScoreDoc对象获取具体的Document对象

8.根据Document对象获取需要的值

9.关闭IndexReader

 

文档Document和域Field的关系

文档Document相当于关系表中的每一条记录,域相当于表中的每一个字段,先创建文档,之后为文档添加域.

域存储选项和域索引选项,均需要在域添加的时候设置

 

存储域选项

Field.Store.YES表示把这个域中的内容完全存储到文件中,方便进行文本的还原

Field.Store.NO表示把这个域中的内容不存储到文件中,但是可以被索引,此时内容无法还原(即无法document.get());

 

索引域选项

Field.Index.ANALYZED:进行分词和索引,适用于标题和内容等

Field.Index.NOT_ANALYZED:进行索引,但是不进行分词,像身份证号,姓名,ID等,适用于精确索索

Field.Index.ANALYZED_NO_NORMS:进行分词但是不存储norms信息,这个norms中包括了创建索引的时间和权值等信息

Field.Index.NOT_ANALYZED_NO_NORMS:即不进行分词也不存储norms信息

Field.Index.NO:不进行索引  

 

最佳实践

Field.Index.NOT_ANALYZED_NO_NORMS, Field.Store.YES标识符(主键,文件名),电话号码,身份证号,姓名,日期

Field.Index.ANALYZED, Field.Store.YES文档标题和摘要

Field.Index.ANALYZED, Field.Store.NO文档正文

Field.Index.NO,Field.Store.YES文档类型,数据库主键(不进行索引)

Field.Index.NOT_ANALYZED,Field.Store.NO 隐藏关键字

posted on 2014-12-24 15:42  画一个圆圈  阅读(96)  评论(0编辑  收藏  举报

导航