我正在使用Lucene对文档进行索引并执行搜索,之后立即删除它们。这可以视为一种相当原子的操作,包括以下步骤:
重要提示:每个线程处理一组单独的文档,因此一个线程不会触及另一个线程的文档。
为此,我有几个问题:
1)我应该使用
2)
3)您可能有的其他最佳实践和建议将不胜感激。
非常感谢!
可以通过多个并发线程在同一个索引上执行此操作(使用FSDirectory)。索引(writer)--> 搜索(searcher)-->按分数获取文档(reader)-->删除文档(reader)
重要提示:每个线程处理一组单独的文档,因此一个线程不会触及另一个线程的文档。
为此,我有几个问题:
1)我应该使用
IndexWriter
、IndexReader
和IndexSearcher
的单个实例(用于所有线程)吗?(它们应该是线程安全的)2)
IndexWriter
是否可以在IndexReader
删除文档时操纵索引?我需要关闭其中一个以让另一个进行操作吗?也就是说,一个线程可以在另一个线程从中删除文档时写入索引吗?(正如我之前提到的,我可以保证它们处理不同的数据集)3)您可能有的其他最佳实践和建议将不胜感激。
非常感谢!