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

标签 java lucene infinispan

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

但是由于缓存存在于服务器中,有时当服务器崩溃时,我需要重新加载数据并建立索引。这需要很长时间。

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

最佳答案

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 所建议的那样,最好单独调整每个缓存,因为它们将以不同的方式使用。下面提供了更多详细信息。

可以动态添加或删除新节点,使服务管理变得非常容易,并且也适合云环境:对负载峰值使用react很简单,因为只需启动更多内存和 CPU 能力即可向搜索系统添加更多内存和 CPU 能力节点。

引用documentationAPI reference了解详情

关于java - 如何在 Infinispan 中加载现有的 Lucene 索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24534085/

相关文章:

java - 用于不同 CacheMode 的 Inifinispan jgroup

java - 计算 Infinispan 缓存内存大小

java - 如何获取线与缓冲图像或矩形碰撞的点?

java - 将 infix 转换为 Postfix 时扫描多位数字

java - 将 JsonElement 保留到单个表列中

lucene - Gremlin 中的数字比较运算符和通配符

mapreduce - Infinispan 分布式流的性能

java - 如何从另一种方法访问用户输入

elasticsearch - Elasticsearch 索引下的元数据?

lucene - 如何使用查询词 tfidf 作为 Lucene 中文档相似度计算的一个因素