如何在Infinispan中加载现有的Lucene索引?

时间:2014-07-02 14:41:24

标签: java lucene infinispan

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

但是因为缓存存在于服务器中,有时当服务器发生故障时,我需要重新加载数据并将其编入索引。这需要很长时间。

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

1 个答案:

答案 0 :(得分:0)

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允许您在同一组缓存中存储不同的索引。

在这个例子中缓存被传递了三次,因为这对于快速演示是可以的,但是因为API建议分别调整每个缓存是个好主意,因为它们将以不同的方式使用。更多细节见下文。

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

有关详细信息,请参阅documentationAPI reference