Hibernate Search(基于version3.4)--第七章Index Optimization
?
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的表现FullTextSession fullTextSession = Search.getFullTextSession(regularSession);SearchFactory searchFactory = fullTextSession.getSearchFactory();searchFactory.optimize(Order.class);// orsearchFactory.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_docshibernate.search.[default|<indexname>].indexwriter.[batch|transaction].max_merge_docshibernate.search.[default|<indexname>].indexwriter.[batch|transaction].merge_factorhibernate.search.[default|<indexname>].indexwriter.[batch|transaction].ram_buffer_sizehibernate.search.[default|<indexname>].indexwriter.[batch|transaction].term_index_interval?
See Section 3.10, “Tuning Lucene indexing performance” for more details
?
?
?
?
?
?
?
?
?