0

我正在使用 Lucene Core 3.6。

我是在多用户环境的上下文中提出这个问题的,其中许多并发请求将进入IndexSearcher.

我可以IndexWriter使用相同的内容创建一个新的,Directory并且Analyzer我曾经最初填充索引并安全地写入它吗?是否有我必须注意的阻塞、同步或并发问题?

根据我的阅读,我相信新添加的文档在我打开一个新文档后立即可用,IndexSearcher但是我也读到出于性能原因,我希望IndexSearcher尽可能长时间地保持打开状态。对我来说,这意味着我必须跟踪何时写入索引,以便IndexSearcher在下一个请求时返回一个新的。

我怀疑我的Directory实施选择对此有影响。到现在我只用过RAMDirectory

编辑:更新标题以更好地阐明我的要求。

4

1 回答 1

2

使用 SearchManager。Mike McCandless 有一篇关于搜索管理器和 NRT 管理器的博客文章可能会有所帮助。

您可以在线阅读各种关于 Lucene 如何实现近实时 (NRT) 索引更新的文章,但要回答您的基本问题:应该只打开一个 IndexWriter,但在更新时会从该作者打开新的阅读器。尽可能长时间地保持阅读器打开是件好事,但由于使用 NRT 更新来自内存,因此它的周转速度非常快(通常为几十毫秒)。

于 2012-05-20T16:13:49.073 回答