在我的应用程序中,我使用 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
答案 0 :(得分:2)
您是否已分析过您的申请。在这种情况下很难给出一般性建议。
您还使用了哪些配置设置?有几个属性可以影响索引行为。有关详细信息,请参阅http://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#search-batchindex-massindexer。什么是索引期间的内存消耗。您是否也对此进行了监控。
因为我使用了投影而不是让Hibernate Search获取搜索结果>从DB,我的许多索引字段都存储在Index(Store.YES)中。这会影响到 表现显着?
我希望它主要影响索引大小而不是索引性能。