基本索引操作
索引过程中对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 限制域的大小
索引优化
索引优化只可以提高搜索速度
锁机制