如何通过对Infinispan或Hibernate Search的API调用为各个项目编制索引?

已知颜色

我有一个使用Hibernate Search(由Lucene索引支持)和Infinispan的应用程序。使用Hibernate Core加载我的数据(我相信从3.2开始就可以了)。

在启动时,应用程序会从各种来源将大量数据加载到Infinispan缓存中。我发现,如果我们保留自动索引功能(即指定hibernate.search.indexing_strategy = manual),则缓存插入(以及相关的索引编制)将占用大量内存,并且通常根本无法完成。为了解决这个问题,我禁用了自动索引,并且在插入所有初始数据之后,在缓存上运行了批量/质量索引器-这只需要几秒钟,就可以正常工作。

我的问题是我会定期从缓存中插入/更新/删除项目,而我无法找到一种方法来告诉Infinispan或Hibernate Search [重新]为这些项目建立索引。我可以从Hibernate搜索文档中找到最接近的一个,它涉及一个Hibernate会话,并且仅适用于托管对象。我没有通过Hibernate加载数据,因此这是不可能的。

如何通过对Infinispan或Hibernate Search的API调用为各个项目编制索引?

我期待您能提供的任何帮助,如果您需要任何其他信息,请告诉我。

谢谢,詹姆斯

桑内

Infinispan不提供显式的index()方法。添加一个是一个好主意,欢迎您打开JIRA作为功能请求。

您可以做的是始终保持启用自动索引编制,然后使用AdvancedCache上的withFlags方法禁用每个put()操作的索引编制并启用Flag SKIP_INDEXING

Cache nonIndexedCache = cache.getAdvancedCache().withFlags(Flag.SKIP_INDEX);
nonIndexedCache.put( ... );

请注意,示例中的第一行相当慢,因此您要保留对该高速缓存的引用,以进行多次放置操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JGroups ec2群集无法通过Hibernate Search / Infinispan设置进行连接(超时)

如何通过Java API在ElasticSearch中重新编制索引

配置Hibernate Search的Infinispan的同和Wildfly

Hibernate Search、Infinispan、jgroups、Wildfly 集群集成配置

Infinispan:如何异步调用 EntryProcessor?

如何通过多索引加快熊猫的索引编制?

更改一个字段后,Hibernate Search未编制索引

iOS NSCoreDataCoreSpotlightDelegate,如何为所有项目重新编制索引

Cython和numpy如何摆脱花哨的索引编制(不调用Python)

如何通过 postman 调用 REST API 在 Azure 中创建索引?

如何通过系统调用为点分配值?

如何初始化通过远程方法调用获取的Hibernate实体?

Hibernate Search不为数据库中的项目建立索引

如何为pdf文档编制索引?

如何加快ElasticSearch索引编制速度?

如何基于“父母”编制索引和订购?

如何循环通过API调用

Hibernate envers + hibernate-search :通过 Lucene/Elasticsearhc 索引读取审计信息

如何通过索引选择调用函数

如何通过选择特定时间间隔中的时间为pandas DataFrames编制索引?

如何在Firebase中通过电子邮件编制索引?

如何在reactjs新的挂钩API中进行API调用并在各个组件之间共享?

如何通过搜索引擎控制台在Google上为客户的网站(使用WordPress构建)编制索引?

如何使用Hibernate-Search索引和搜索ENUM类型

如何在 Hibernate-search 中索引继承的字段?

如何保护Infinispan群集

如何通过GitHub API获取项目徽章?

如何通过api在Workfront中创建项目

通过Java API在Elastic Search中创建索引