lucene 索引

基本索引操作

索引过程中对Document和Field对象进行加权操作

对日期、数字和域进行索引

使用能够影响Lucene索引性能以及资源开销的参数

优化索引

理解并发、多线程和索引过程中的锁机制

 

通过批量删除的方式进行更新操作

1、打开IndexReader对象

2、删除所有需要删除的Document对象

3、关闭IndexReader对象

4、打开IndexWriter对象

5、添加所有需要添加的Document对象

6、关闭IndexWriter对象

(为什么批量删除比交替删除快,因为交替删除需要多次打开关闭IndexReader和IndexWriter对象)

 

通过设置加权因子来决定搜索排序结果:setBoost(float)

setBoost可以被Document和Field调用

 

索引日期

只需搜索日期

Field.Keyword("date",'YYYYMMDD');

搜索时间戳

Field.Keyword("timestamp","java.util.Date");

 

处理数值

WhitespaceAnalyzer和StandardAnalyzer  可以处理形如“8848 meters tall”

但是SimpleAnalyzer和StopAnalyzer则会将数字剔除出去。

当索引数值域对象时,用Field.Keyword如果希望利用它们来进行范围查询,就用0来填充。以解决自然顺序和字典顺序不一致的问题。

7, 71,20 的自然顺序是 7 20 71,但字典顺序是20 7 71。全部加0, 007 020 071

 

索引Field对象用于排序

用于排序的域对象的值只索引,不许分析。一定是可以被转换成整型,浮点型或者字符串型的对象。

 

调整索引的性能

mergeFactor   增大会提高索引速度,但会降低搜索效率(索引文件过多)

maxMergeDocs

minMergeDocs  增大会提高索引速度

 

通过把RAMDirectory作为一个缓冲器实现对索引的批处理

1、创建一个基于FSDirectory的索引

2、创建一个基于RAMDirectory的索引

3、向基于RAMDirectory的索引中添加文档

4、不定期把缓存在RAMDirectory中的所有数据写入FSDirectory

5、转到第三步

 

maxFieldLength 限制域的大小

 

索引优化

索引优化只可以提高搜索速度

 

锁机制

 

 

 

你可能感兴趣的:(lucene 索引)