7.7. 索引优化


Lucene 索引需要不时地进行优化。进程本质上是碎片整理。在触发优化前,Lucene 仅标记已删除的文档,不会应用物理文件。在优化过程中,将应用删除,这也会影响 Lucene 目录中的文件数量。

优化 Lucene 索引可以加快搜索速度,但不影响索引(更新)性能。在优化期间,可以执行搜索,但很有可能会减慢速度。所有索引更新都将停止。建议您调度优化:

优化 Lucene 索引可以加快搜索速度,但不影响索引更新性能。可以在优化过程中执行搜索,但它们比预期要慢。所有索引更新在优化过程中都会被保留。因此,建议调度优化:

  • 在空闲的系统上或搜索频率最低时。
  • 应用大量索引修改后。

MassIndexer 在处理开始和结束时默认优化索引。使用 MassIndexer.optimizeAfterPurgeMassIndexer.optimizeOnFinish 更改此默认行为。如需更多信息,请参阅使用 MassIndexer

7.7.1. 自动优化

Hibernate 搜索可以在以下任一后自动优化索引:

Infinispan Query 在以下自动优化索引:

  • 特定的操作(插入或删除)。
  • 特定的交易量。

自动索引优化配置可以全局定义,也可以为每个索引定义:

示例:定义自动优化参数

hibernate.search.default.optimizer.operation_limit.max = 1000
hibernate.search.default.optimizer.transaction_limit.max = 100
hibernate.search.Animal.optimizer.transaction_limit.max = 50
Copy to Clipboard Toggle word wrap

优化过程会立即触发 Animal 索引:

  • 添加和删除的数量达到 1000
  • 事务数量达到 50 (hibernate.search.Animal.optimizer.transaction_limit.max )具有高于 hibernate.search.default.optimizer.transaction_limit.max的优先级。

如果没有定义任何这些参数,则不会自动处理优化。

OptimizerStrategy 的默认实现可以被实现 org.hibernate.search.store.optimization.OptimizerStrategy 覆盖,并将 optimizer. implementation 属性 设置为实施的完全限定名称。此实施必须实施 接口(为公共类),并且具有不带任何参数的公共构造器。

示例:载入自定义 OptimizerStrategy

hibernate.search.default.optimizer.implementation = com.acme.worlddomination.SmartOptimizer
hibernate.search.default.optimizer.SomeOption = CustomConfigurationValue
hibernate.search.humans.optimizer.implementation = default
Copy to Clipboard Toggle word wrap

关键字 default 可用于选择 Hibernate Search 默认实施;启动时,.optimizer 键分隔符之后的所有属性都将传递给实施的初始方法。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat