【问题标题】:Updating index in Lucene.NET在 Lucene.NET 中更新索引
【发布时间】:2012-07-17 11:31:50
【问题描述】:

我正在使用 Lucene.NET 进行搜索 POC。

我启动了一个存储过程,它从数据库中获取大约 50000 条记录。 这些记录我放在 Lucene 索引中。

现在当数据库中的记录发生变化时,如何更新 Lucene 索引。 删除整个以前的索引并创建一个新索引将花费大量时间。

我想将数据库中的新记录追加到现有索引中。

我怎样才能做到这一点。 有什么想法???

谢谢, 阿尼什

【问题讨论】:

    标签: lucene.net


    【解决方案1】:

    只需使用 lucene AddDocument 方法,如下所示:

    IndexWriter iw = new IndexWriter(folder, GetAnalyzer(), false);
      try
      {
        Document luceneDoc = new Document();
        /// add fields to the lucene document
        iw.AddDocument(luceneDoc);
      }
      finally
      {
        iw.Close();
      }
    

    【讨论】:

    • 我这样做了,但是我在这个 IndexWriter iw = new IndexWriter(folder, GetAnalyzer(), false); (当上述函数中的第三个参数为假时)在 Lucene.Net.Store.SimpleFSDirectory @D:\Lucene.Net\Data\Publication lockFactory=Lucene.Net.Store.SimpleFSLockFactory 中找不到段*文件:文件:写入。锁
    • 你的索引目录有锁文件吗?
    • 嗨安东尼奥,我想你猜对了。我得到这个错误。锁获取超时:SimpleFSLock@D:\Lucene.Net\Data\Publication\write.lock 如何解决?
    • 您上次构建索引时没有关闭 IndexWrite,必须将其放入 finally 块中。尝试简单地删除锁定文件,但您的索引现在可能已损坏
    • 我确实关闭了它。如何删除锁定文件?你的意思是,保存在存储索引的文件夹中的那个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 2014-10-25
    相关资源
    最近更新 更多