2014-04-16 36 views
0

我正在制作一个使用Lucene作为搜索引擎的网络应用程序。首先,用户必须选择一个文件/目录进行索引,然后他可以搜索它(噢!)。我的问题发生在用户尝试索引大量数据时:例如,如果用户刷新页面并尝试索引另一个目录,则会抛出异常,因为第一个索引仍在运行(写入.lock显示)。已知,如何停止第一个索引?我试图关闭IndexWriter没有成功。如何在启动另一个程序之前停止运行索引?

在此先感谢。

回答

0

为什么要打断第一次索引操作并重新启动?

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

+0

是的,我同意你的意见。实际上,有一个反馈给用户,表明索引正在发生..但是如果它花费的时间太长,并且用户不想等到它完成,那么该怎么办?用户必须有一种方法来取消以前的索引,而不会影响整个应用程序 – lucasdc

0

您可能正试图在index indexer打开的索引目录上打开一个indexwriter实例。如果您在两个不同的索引目录上打开了indexwriter,那么write.lock的异常将不会发生。你能否检查一下新的indexwriter实例是不是正在写入已经打开indexwriter的以前打开过的索引目录。

相关问题