我正在使用Lucene 4.0 API在我的应用程序中实现搜索。
导航流程如下:
Document
将新的IndexWriter.addDocument()
添加到索引中。SearcherManager.maybeRefresh()
方法。 SearcherManager
是根据Writer
构建的,以便能够访问NRL搜索。Writer.updateDocument()
时。考虑到在第2步我要求刷新,我希望Searcher找到添加的文档。但是,找不到这个。这是常见行为吗?是否有办法让Searcher找到文件? (除了提交)
答案 0 :(得分:1)
我猜你新创建的文档保存在内存中。 Lucene不会立即进行更改,它会将一些文档保留在内存中,因为I / O操作需要一些时间和资源。只有在缓冲区已满时才写入是一个好习惯。但是,既然您想立即查看和更改文档,请先尝试刷新缓冲区(IndexWriter.flush()
)。这应写入磁盘。只有 后才尝试(可能)刷新。