我有一个.net windows服务,它每晚都会生成Lucene搜索索引。 我首先从数据库中获取所有记录,然后使用IndexWriter的AddDocument方法将其添加到Lucene索引,然后在从方法返回之前调用Optimize方法。 由于获取的记录非常大,索引编制大约需要2-3分钟才能完成。 如您所知,Lucene在生成索引时生成中间段文件,并在调用Optimize时将整个索引压缩为3个文件。
无论如何我可以知道这个索引生成过程是由Lucene完成的,索引是否可以搜索? 我需要知道这一点,因为我想在完成流程时调用另一种方法。
答案 0 :(得分:4)
您可以检查是否存在write.lock文件。
http://wiki.apache.org/lucene-java/LuceneFAQ#head-733eab8f4000ba0f6c9f4ea052dea77d3d541857
答案 1 :(得分:0)
我不明白为什么你需要知道Lucene什么时候完成索引。您可以在Lucene编制索引时执行搜索。事实上,我认为你可以在优化时进行搜索。
我个人不喜欢搜索锁定文件的想法。在调用writer.optimize()后,你能不能设置一个布尔值并切换它?