SearcherManager mayRefresh方法没有发生

时间:2012-11-07 20:38:48

标签: java lucene

我正在使用Lucene 4.0 API在我的应用程序中实现搜索。

导航流程如下:

  1. 用户创建新文章。然后使用Document将新的IndexWriter.addDocument()添加到索引中。
  2. 添加后,调用SearcherManager.maybeRefresh()方法。 SearcherManager是根据Writer构建的,以便能够访问NRL搜索。
  3. 创建之后,用户决定在他的文章中添加新标签。这是在调用Writer.updateDocument()时。考虑到在第2步我要求刷新,我希望Searcher找到添加的文档。但是,找不到这个。
  4. 这是常见行为吗?是否有办法让Searcher找到文件? (除了提交)

1 个答案:

答案 0 :(得分:1)

我猜你新创建的文档保存在内存中。 Lucene不会立即进行更改,它会将一些文档保留在内存中,因为I / O操作需要一些时间和资源。只有在缓冲区已满时才写入是一个好习惯。但是,既然您想立即查看和更改文档,请先尝试刷新缓冲区(IndexWriter.flush())。这应写入磁盘。只有 后才尝试(可能)刷新。