我正在谷歌上搜索两天......我真的需要帮助.
我有一个多线程的应用程序尝试使用IndexWriter每次更新的打开/关闭更新lucene索引.线程可以随时启动.
是的,问题write.lock!所以可能有两个或更多解决方案:
1)检查IndexWriter.IsLocked(index)并确定是否锁定以使线程休眠.
2)打开一个IndexWriter,永远不要关闭它.问题是我有另一个使用相同索引的应用程序.我应该什么时候关闭索引并完成整个过程?
这里有趣的帖子
Lucene IndexWriter线程安全
Lucene - 打开一个封闭的IndexWriter
更新: 整整2年后,我做了一个包含此功能的休息API,所有写入和读取都被路由到API.
多个线程,相同的进程:
保持IndexWriter打开状态,并在多个线程中共享它.这IndexWriter是线程安全的.
对于多个流程,您的解决方案#1很容易出现竞争条件问题.您需要使用named Mutex来安全地实现它:http:
//msdn.microsoft.com/en-us/library/bwe34f1k.aspx
话虽这么说,我个人会选择一个专门写入索引的进程,并使用类似WCF的东西与它进行通信.