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);
原文地址:https://www.cnblogs.com/erbin/p/3947654.html