lucene简明学习笔记

全文索引工具中,都是由这样三部分组成:数据库

1,索引部分 2,分词部分 3,搜索部分工具

建立索引过程:1建立directory2建立writer(索引),3建立文档而且添加索引 4查询索引的基本信息 删除和更新索引。spa

模糊查询:orm

Query query=new FuzzyQuery(new Term(name,make));对象

public void index(){排序

 

//建立directory索引

//建立indexwriter文档

//建立document对象get

//为document添加fieldit

//经过indexwriter添加文档到索引中

}

存储域选项:

Field.Store.Yes /No

设置为Yes表示把这个域的内容彻底存储到文件中,方便进行文本的还原 doc.get

设置为No表示把这个域的内容不存储到文件中,但能够被索引,此时内容没法被还原。

摘要须要存储。

索引域选项:

Field.Index

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

.NOT_ANALYZED 进行索引,可是不进行分词,如身份证号码,姓名,id等,适用于精确索引

.ANALYZED_NOT_NORMS:进行分词可是不存储norms信息,这个norms中包括了建立索引的时间和权值等信息(评分,显示的排序信息)

.NOT_NORMS既不进行分词,也不存储norms信息(不多用)

.NO不进行索引。

最佳实践:  NOT_ANALYZED_NOT_NORMS  YES 标示符(主键,文件名),电话号码, 身份证号码,姓名,日期

ANALYZED                     YES  文档标题和摘要

ANALYZED      NO 文档正文

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

NOT_ANALYZED     NO 隐藏关键字

添加索引:writer.add(doc)

更新索引|替换索引:writer.updateDocument(new Term("id","1"), doc);

从新索引:writer.deleteall();

删除索引:writer.deleteDocuments(new Term("id","1"));

完全删除索引:writer.forceMergeDeletes();

恢复删除的索引:reader.undeleteAll();

查询索引:readerxxx

 

 

 

域能加权,文档不能加权:setBoost

 

indexreader最好创建成单例的

delete能够用reader.deletDocument(new term(id,1))

不关闭索引能够用writer.conmit

相关文章
相关标签/搜索