Index Optimization
随着时间推移,Lucene index需要经过优化。这个过程实际上是文件的合并。在优化操作触发之前,Lucene文档删除操作只是标志删除的文档,并不会从物理上删除文档。在优化过程中,将会应用删除操作,也会影响Lucene Directory中文件的数量。
优化Lucene index可以提高搜索的速度,但对于更新操作是毫无效果的。在优化过程中,也可以进行搜索操作,但会显得有些慢。所有的index更新操作会被停止。它推荐schedule optimization:
- 在一个空闲的系统中或当搜索不频繁时。
- 在大量index修改后
当使用MassIndexer(see Section 6.3.2, “Using a MassIndexer”),它会在建立index过程中优化。也可以使用MassIndexer.optimizeAfterPurge和 MassIndexer.optimizeOnFinish改变MassIndexer的表现
7.1. Automatic optimization
Hibernate Search会在下面情景后自动地进行优化操作:
- 在一定操作数后(插入,删除)
- 在进行了一定事务处理数量后
可以在全局级别或具体index级别上定义自动index优化配置:
- hibernate.search.default.optimizer.operation_limit.max = 1000
- hibernate.search.default.optimizer.transaction_limit.max = 100
- hibernate.search.Animal.optimizer.transaction_limit.max = 50
Animal index优化操作会因下面情形触发:
- 添加删除操作数超过1000
- 事务数量到过50。hibernate.search.Animal.optimizer.transaction_limit.max比 hibernate.search.default.optimizer.transaction_limit.max有更高的优先级。
如果没有定义这些参数,将不会自动地进行优化操作。
7.2. Manual optimization
你也可以通过编程来优化一个Lucene index,这也要借助Hibernate Search的SearchFactory:
Example 7.2. Programmatic index optimization
- FullTextSession fullTextSession = Search.getFullTextSession(regularSession);
- SearchFactory searchFactory = fullTextSession.getSearchFactory();
- searchFactory.optimize(Order.class);
- // or
- searchFactory.optimize();
第一个例子只优化Order索引,第二个例子,优化所有index。
Note:searchFactory.optimize()对JMS backend没有任何效果。你必须应用优化操作在Master端。
7.3. Adjusting optimization
Apache Lucene有一些参数影响优化过程的表现。Hibernate Search暴露了这些参数:
- hibernate.search.[default|<indexname>].indexwriter.[batch|transaction].max_buffered_docs
- hibernate.search.[default|<indexname>].indexwriter.[batch|transaction].max_merge_docs
- hibernate.search.[default|<indexname>].indexwriter.[batch|transaction].merge_factor
- hibernate.search.[default|<indexname>].indexwriter.[batch|transaction].ram_buffer_size
- hibernate.search.[default|<indexname>].indexwriter.[batch|transaction].term_index_interval
See Section 3.10, “Tuning Lucene indexing performance” for more details
相关推荐
The Intel® 64 and IA-32 Architectures Optimization Reference Manual describes how to optimize software to take advantage of the performance characteristics of IA-32 and Intel 64 architecture ...
an-introduction-to-optimization-4th-edition-solution-manual 为an introduction-to-optimization-4th-edition 的习题解答,高清英文完整版本
生物地理学优化算法(Biogeography-Based Optimization,简称BBO)是一种新兴的全局优化算法,源于生物地理学中的物种分布和演化理论。该算法模拟了物种在地理空间中的迁移、竞争、适应性等过程,以寻找问题的最优解...
VINS-Mono是一种基于单目视觉的Simultaneous Localization And Mapping (SLAM)算法,它在实时环境下能够估计相机的运动轨迹并构建环境的地图。VINS-Mono的主要优点在于其高效性和鲁棒性,能够在资源有限的设备上运行...
PSO(Particle Swarm Optimization,粒子群优化算法)是一种基于群体智能的全局优化算法,由Kennedy和Eberhart于1995年提出。该算法模拟了鸟群寻找食物的过程,通过群体中每个粒子的个体经验和全局经验来更新其飞行...
标题:hibernate_search.pdf 描述与标签:此文档详细介绍了Hibernate Search的使用与配置,一个为Hibernate ORM提供全文搜索功能的扩展。该文档版本为3.1.0.GA,深入探讨了如何将Apache Lucene集成到Hibernate ORM...
基于遗传算法的桥梁人致振动优化_Structural-optimization-based-on-genetic-algorithm
贝叶斯超参数优化是一种高效的模型调优方法,它基于贝叶斯统计理论,通过构建概率模型来预测不同超参数组合下的目标函数性能,并利用高斯过程作为基础概率模型。在机器学习中,超参数是定义模型结构和训练过程的重要...
Matlab的`Global Optimization Toolbox`提供了`multi-start`方法,以及`patternsearch`和`simulannealbnd`等全局优化算法。 6. **拟合与回归**:Matlab的`lsqcurvefit`和`lsqnonlin`函数用于非线性曲线拟合和非线性...
arm-cortex-a76-software-optimization-guide,值得收藏
1. 多-start:这是一种基于多次启动的策略,通过在不同的初始点运行局部优化算法,以增加找到全局最优解的概率。 2. 遗传算法(Genetic Algorithm, GA):模仿生物进化过程,通过选择、交叉和变异操作搜索解空间。 3...
written by Aharon Ben-Tal Laurent El Ghaoui Arkadi Nemirovski ... PART I. ROBUST LINEAR OPTIMIZATION 1 Chapter 1. Uncertain Linear Optimization Problems and their Robust Counterparts 3 ...Index 539
通信仿真ny-optimization-tkinter-ma开发笔记
"Spatio-Temporal-Power-Optimization-for-MIMO-Joint-Communication" 这篇论文主要研究了如何在多输入多输出(MIMO)下行系统中实现时空功率优化,以最大化联合通信和雷达感知系统的互信息(MI)。论文首先推导出...