我使用Lucene来索引文档并执行搜索后,我立即将其删除。 这一切都可以被认为是包括以下步骤有点原子动作:Lucene的良好做法和线程安全
指数(作家)- >搜索(搜索)- >获得通过的分数文档 (读者)- >删除文档(读取器)
这个动作可以通过在相同的索引多个并发线程(使用FSDirectory
)来执行。
重要提示:每个线程处理一组独立的文件,使一个线程不会去碰另一个线程的文件
为目的,我有几个问题:
1)我应该使用一个单一的实例(所有线程)的IndexWriter
,IndexReader
和IndexSearcher
? (它们应该是线程安全的)
2)可以通过一个IndexWriter
操作索引,而IndexReader
删除文件?我需要关闭另一个来做它的事吗? 的意思是,一个线程可以写入索引而另一个线程从中删除(正如我前面提到的,我可以保证他们处理单独的数据集)
3)您可能有的任何其他良好做法和建议最受赞赏。
非常感谢!
感谢您的迅速和书面答复! – levtatarov 2012-01-16 11:25:14