Tips——IndexSearcher自动更新
情景描述
为了调高效率,创建全局变量IndexReader取代每次查询新建IndexReader所带来的效率问题。
当时每天会更新一边索引8.23号部署的Index服务,Search服务,结果index都更新到了8.25,查询结果还是8.23的
Tips分享
先来看一下IndexSearcher的构造方法indexSearcher = new IndexSearcher(indexReader);
传入一个indexReader,要知道在整个服务过程中,除非人为显示的关闭reader的话,其他情况下,reader是不会关闭的。
所以就算index文件怎么变化,indexSearcher也不会捕捉到,或者说及时更新。
所以,就需要Searcher服务和Index服务保持一样的更新频率,在Index更新后Searcher也重新打开一个IndexReader
indexReader.close(); indexReaded = new IndexReader(Directory); indexSearcher = new IndexSearcher(indexReader);