【问题标题】:Concurrent Reading and writing for lucenelucene的并发读写
【发布时间】:2014-04-14 07:59:18
【问题描述】:

我使用的是 lucene 4.5 版本。

我目前正在从 Oracle DB 读取数据并将所有数据索引到 lucene。现在,我需要在十分钟后逐步更新索引文件夹。因此,在这种情况下,如果我打开写入,我的段文件将被删除。所以我无法从 lucene 进行搜索。我试着看看我们是否可以同时读写。但我找不到任何解决方案。

任何人都可以为此提出一些想法吗?我们在增量期间读取的数据较少。所以数据很快就会被索引。但我不能每十分钟就停止一次搜索。 抱歉,如果我重复了同样的问题。但我找到了 lucene 3.6 的所有答案,并且在 lucene 4.5 版本中不适合我。

【问题讨论】:

    标签: java lucene


    【解决方案1】:

    您可以执行以下操作:

    1. 创建初始索引。
    2. 十分钟后,使用更新的数据创建另一个索引。
    3. 在完成 2 后切换阅读器以使用更新后的索引。
    4. 删除(现已过时的)索引。
    5. 见 2。

    这个建议对于任何 Lucene 版本都是完全不可知的。

    【讨论】:

      【解决方案2】:

      您也可以为appending打开IndexWriter

      IndexWriterConfig iwc = new IndexWriterConfig(LUCENE_VERSION, analyzer);
      iwc.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND);
      IndexWriter writer = new IndexWriter(directory, iwc);
      

      各位读者不要受此影响,可以继续搜索。更新索引后,您应该重新打开您的阅读器,以便他们可以搜索更新的数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多