[lucene] lucene3无法动态更新索引
widhor
2010-02-08
本人现在做一电子商务网站,主要是一个基于事务的管理信息系统,但是搜索部分要求全文索引,于是就用了lucene3,大致想法是通过jms异步调用来动态更新索引,经过测试如果用SimpleFSDirectory,动态更新100次,耗时9688ms,而如果用RAMDirectory,动态更新1000次,耗时才1766ms,觉得能接受,现在内存也便宜。但是现在发现索引总是无法更新,经过反复测试,发现如果不执行查询之前,索引是可以更新的,但是只要查询一次,索引就无法动态更新了,并且连个异常也没有!这是什么原因呢?如何修改以满足要求呢?
还有个问题,如果用RAMDirectory,还需要iwriter.optimize()来定时优化索引么? 本人对lucene内部结构和实现方式一窍不通,希望各位能指点迷津!谢谢! |
|
widhor
2010-02-08
又测试了一下,发现调用下IndexSearcher的close()方法就又可以动态更新了!本来据说IndexSearcher做成个单例了能提升性能的……整不明白啊……先凑合着用了
|
|
widhor
2010-02-08
猜测lucene大概有一个像数据库一样的锁机制,读的时候不让写,写的时候不让读
|