近实时搜索
Lucene3.5起提供了NRTManager管理近实时搜索。原理:将搜索存放到内存中,每个一定时间提交到硬盘中。
NRTManager和SearchManager是线程安全的
使用NRTManager获取SearchManager。并且使用NRTManager进行修改操作。其修改操作只是保存在内存中,只有writer.commit()时才保存到硬盘中。
NRTManager是每个一定时间调用一次maybeReopen()方法,如果有更改则重新打开searcher。是通过线程控制maybeReopen()调用的
比如每个10秒钟调用一次 maybeReopen(),那么搜索会延迟10秒钟。这就是近实时搜索。
indexWriter最好是单例的。
SearchManager
使用SearchManger获取IndexSearcher
第二和第三个参数为空也可,Lucene会自动帮我们管理。
NRTManager
删除:
必须提交才可以写到硬盘中,否则只是在内存中