`
sin90lzc
  • 浏览: 157172 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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的表现

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

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics