如何在启动另一个之前停止运行索引?

时间:2014-04-16 19:18:48

标签: apache lucene

我正在制作一个使用Lucene作为搜索引擎的网络应用。首先,用户必须选择要索引的文件/目录,之后他能够搜索它(呃!)。当用户尝试索引大量数据时,我的问题就出现了:例如,如果它花费的时间过长而用户刷新页面并尝试索引另一个目录,则抛出异常,因为第一个索引是仍在运行(write.lock显示)。众所周知,如何停止第一次索引?我试图关闭IndexWriter但没有成功。

提前致谢。

2 个答案:

答案 0 :(得分:0)

为什么要中断第一个索引操作并重新启动它?

在我看来,你应该显示一个简单的图像,表明系统正在运行(正如尼尔森所说:“系统应该始终通过适当的反馈在合理的时间内让用户了解正在发生的事情。”)用户按刷新,您应该拦截事件并阻止执行另一个索引过程。

答案 1 :(得分:0)

您可能正在尝试在索引目录上打开一个indexwriter实例,该索引目录已经打开了indexwriter。如果您在两个不同的索引目录上打开了indexwriter,则不会发生write.lock的异常。您能否检查一下新索引编写器实例是否写入先前已打开的索引目录,该目录已在其上打开了索引编写器。