6.Locking机制
lucence
内部使用文件来locking
![](/icons/25107dou.gif)
默认
![](/icons/25107de.gif)
locking文件放在java.io.tmpdir,可以通过-Dorg.apache.lucene.lockDir=xxx指定新
![](/icons/25107de.gif)
dir
![](/icons/25107dou.gif)
有write.lock commit.lock两个文件
![](/icons/25107dou.gif)
lock文件用来防止并行操作index
![](/icons/25107dou.gif)
如果并行操作
![](/icons/25107dou.gif)
lucene会抛出异常
![](/icons/25107dou.gif)
可以通过设置-DdisableLuceneLocks=true来禁止locking
![](/icons/25107dou.gif)
这样做
![](/icons/25107yi.gif)
般来说很危险
![](/icons/25107dou.gif)
除非你有操作系统或者物理级别
![](/icons/25107de.gif)
只读保证
![](/icons/25107dou.gif)
比如把index文件刻盘到CDROM上
![](/icons/25107dou2.gif)
十
![](/icons/25107yi.gif)
、
2.0中新增特性
1.
新增类: org.apache.lucene.index.IndexMod
![](/icons/25107if.gif)
ier
![](/icons/25107dou.gif)
它合并了 IndexWriter 和 IndexReader
![](/icons/25107dou.gif)
好处是我们可以增加和删除文档
![](/icons/25107de.gif)
时候区别担心 synchronisation/locking
![](/icons/25107de.gif)
问题了
![](/icons/25107dou2.gif)
2.
增加对 contrib/highlighter
![](/icons/25107de.gif)
NullFragmenter , 这对全文本加亮很有用
![](/icons/25107dou2.gif)
3.
增加了新类 MatchAllDocsQuery 用来匹配所有文档
![](/icons/25107dou2.gif)
4..
增加 ParallelReader
![](/icons/25107dou.gif)
这个
![](/icons/25107yi.gif)
种IndexReader 他合并多个单独
![](/icons/25107de.gif)
索引到
![](/icons/25107yi.gif)
个单独
![](/icons/25107de.gif)
虚拟索引上
![](/icons/25107dou2.gif)
5.
增加 Hits.iterator
![](/icons/25107kh.gif)
思路方法和相应
![](/icons/25107de.gif)
HitIterator 和 Hit 对象
![](/icons/25107dou2.gif)
他提供了对 Hits对象标准
![](/icons/25107de.gif)
java.util.Iterator 叠代操作
![](/icons/25107dou2.gif)
每个iterator's next
![](/icons/25107kh.gif)
思路方法返回
![](/icons/25107yi.gif)
个 Hit 对象
![](/icons/25107dou2.gif)
6.
在 term vectors 中增加了位置和偏移信息
![](/icons/25107dou2.gif)
(Grant Ingersoll & Christoph)
7.
增加了
![](/icons/25107yi.gif)
个新
![](/icons/25107de.gif)
DateTools
![](/icons/25107dou2.gif)
允许用户格式化日期到
![](/icons/25107yi.gif)
种更可读
![](/icons/25107de.gif)
格式
![](/icons/25107dou.gif)
以便于更好
![](/icons/25107de.gif)
适应索引
![](/icons/25107dou2.gif)
DateTools 不像 DateFields 类
![](/icons/25107dou.gif)
它允许日期指定到1970年以前
![](/icons/25107dou.gif)
但必须使用指定
![](/icons/25107de.gif)
日期格式
![](/icons/25107dou2.gif)
这样
![](/icons/25107dou.gif)
在RangeQuerys中使用就更加有效率了
![](/icons/25107dou2.gif)
8.
增加了对压缩字段存储
![](/icons/25107de.gif)
支持
![](/icons/25107dou2.gif)
(patch #29370) 例子:
1.
判断索引文件是否存在:
/**
*
检查索引是否存在.
* @param indexDir
* @![](/icons/25107return.gif)
*/
public
boolean indexExist(String indexDir)
{
IndexReader.indexExists(indexDir);
}
private IndexWriter getWriter(String indexFilePath) throws Exception {
boolean append=true;
File file=
File(indexFilePath+File.separator+"segments");
(file.exists
)
append=false;
IndexWriter(indexFilePath,analyzer,append);
}