【问题标题】:How to load an existing Lucene Index in Infinispan?如何在 Infinispan 中加载现有的 Lucene 索引?
【发布时间】:2014-08-23 10:04:01
【问题描述】:

在我使用 Infinispan 6.0.2 的系统中,我在缓存中添加了一些数据并使用 lucene 对它们进行索引。它适用于搜索部分。

但是由于缓存存在于服务器中,有时当服务器出现故障时,我需要重新加载数据并对其进行索引。这需要很长时间。

然后我发现 Infinispan 可以将索引存储在数据库中并从现有的 Lucene 索引加载。我认为这应该可以解决我的问题。但是 Infinispan 用户指南中的信息很少,我不知道该怎么做。谁能举个例子???

【问题讨论】:

  • 您是否考虑过拥有多个服务器并按照documentation link 共享索引?这应该可以解决服务器崩溃而索引仍然存在的问题。

标签: java lucene infinispan


【解决方案1】:

Infinispan 包含一个高度可扩展的分布式 Apache Lucene Directory 实现。创建目录实例:

import org.apache.lucene.store.Directory;
import org.infinispan.lucene.directory.DirectoryBuilder;
import org.infinispan.Cache;

Cache cache = // create an Infinispan cache, configured as you like
Directory indexDir = DirectoryBuilder.newDirectoryInstance(cache, cache, cache, indexName)
                                     .create();

indexName 是标识索引的唯一键。它与基于文件系统的索引上的路径所起的作用相同:您可以创建几个不同的索引,并赋予它们不同的名称。当您在连接到同一网络的另一个实例中使用相同的 indexName(或在同一台机器上实例化,对测试很有用)时,它们将加入、形成一个集群并共享所有内容。使用不同的 indexName 可以让您在同一组缓存中存储不同的索引。

在此示例中缓存传递了 3 次,因为这对于快速演示来说是可以的,但正如 API 所建议的那样,单独调整每个缓存是个好主意,因为它们将以不同的方式使用。下面提供了更多详细信息。

可以动态添加或删除新节点,使服务管理变得非常容易,也适用于云环境:对负载峰值做出反应很简单,因为只需启动更多的资源就可以为搜索系统添加更多内存和 CPU 能力节点。

详情请参阅documentationAPI reference

【讨论】:

    猜你喜欢
    • 2014-07-05
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    相关资源
    最近更新 更多