4

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

导航流程如下:

  1. 用户创建一篇新文章。使用 .将新Document的添加到索引中IndexWriter.addDocument()
  2. 添加后调用该SearcherManager.maybeRefresh()方法。SearcherManager是从 中构建的,Writer以便可以访问 NRL 搜索。
  3. 就在创建之后,用户决定在他的文章中添加一个新标签。这 Writer.updateDocument()是调用的时候。考虑到在第 2 步我要求刷新,我希望搜索器能够找到添加的文档。但是,没有找到。

这是常见的行为吗?有没有办法让搜索者找到文档?(提交除外)

4

1 回答 1

1

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

于 2012-11-08T09:50:50.967 回答