Lucene似乎在缓存搜索结果 - 为什么?

Ula*_*kar 6 java lucene

在我的项目中,我们使用Lucene 2.4.1进行全文搜索.这是一个J2EE项目,IndexSearcher创建一次.在后台,索引每隔几分钟刷新一次(内容更改时).用户可以通过页面上的搜索机制搜索索引.

问题是,Lucene返回的结果似乎是以某种方式缓存的.

这是我注意到的情况:

  • 我启动应用程序并搜索"关键字" - 返回6个结果,
  • 索引刷新,使用Luke我看,现在有8个结果来查询'keyword',
  • 我使用该应用程序再次搜索,再次返回6个结果.

我分析了我们的配置,并没有在任何地方找到任何缓存.我已经调试了搜索,并且代码中没有缓存,searcher.search返回6个结果.

Lucene是否以某种方式在内部缓存结果?我应该检查哪些属性等?

Cow*_*wan 10

若要查看IndexWriters对您已打开IndexReader的索引所做的更改,请务必调用IndexReader.reopen()以查看最新更改.

还要确保IndexWriter通过显式commit(),close()或将autoCommit设置为true来提交更改.

  • reopen()更有效,因为重新创建它会导致读取所有段文件,但reopen()知道只读取自上次打开以来已更新的段. (4认同)