Hibernate Search MassIndexer的合理设置是什么?

时间:2012-10-09 10:42:35

标签: performance lucene hibernate-search

在我的应用程序中,我使用 Hibernate Search 来管理我的一些映射模型类的 Lucene 索引(10个类,部分相互关联 - 使用{{ 1}}在索引定义中相当长一段时间)。有约。索引的1,500,000份文件

为了重建整个索引,我使用文档中提出的质量索引器 http://docs.jboss.org/hibernate/search/3.3/reference/en-US/html/manual-index-changes.html

indexEmbedded

我的数据库连接池大小为50

我观察到索引过程开始很快,直到它达到所有文档的大约25%。之后,性能急剧下降(接下来的5%是前25%的两倍),我想知道为什么会这样?

  • 对象加载线程和索引线程的比例是否正确?
  • 或者仅仅是因为指数的增长?这是否证明了这种表现的下降?
  • 如何提高性能?如何及时实现持续进步?

因为我使用投影而不是让Hibernate Search从DB获取搜索结果,所以我的许多索引字段都存储在Index(fullTextSession .createIndexer() .batchSizeToLoadObjects(200) .cacheMode(CacheMode.IGNORE) .purgeAllOnStart(true) .threadsToLoadObjects(10) .threadsForIndexWriter(10) .threadsForSubsequentFetching(5) .startAndWait(); )中。这是否会显着影响性能?

- 编辑:

我的Hibernate搜索配置:

Store.YES

1 个答案:

答案 0 :(得分:2)

您是否已分析过您的申请。在这种情况下很难给出一般性建议。

您还使用了哪些配置设置?有几个属性可以影响索引行为。有关详细信息,请参阅http://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#search-batchindex-massindexer。什么是索引期间的内存消耗。您是否也对此进行了监控。

  

因为我使用了投影而不是让Hibernate Search获取搜索结果>从DB,我的许多索引字段都存储在Index(Store.YES)中。这会影响到   表现显着?

我希望它主要影响索引大小而不是索引性能。