为什么Mass Indexer无法为多个实体生成索引?

时间:2017-09-16 13:54:28

标签: spring indexing lucene hibernate-search

我正在使用Hibernate Lucene搜索从Database获取记录。这是我的代码片段:

   fullTextSession.createIndexer().startAndWait();

它工作正常,但它正在为整个数据库生成索引。我认为不建议将索引编入整个数据库。在google中进行一些搜索后我发现MassIndexer是解决方案官方doc.Here是我的片段:

fullTextSession.createIndexer(A.class,B.class).batchSizeToLoadObjects(25).cacheMode(CacheMode.NORMAL)
.threadsToLoadObjects(5).typesToIndexInParallel(20).startAndWait();

在这里,我可以获取记录,但是,如果我传递更多实体,例如C.classD.class以及A.classB.class,则无法创建所有实体的索引。而不是它只是为2个实体创建索引,往往无法获取某些记录。所以,请向我推荐一些建议,以避免这个问题。

1 个答案:

答案 0 :(得分:1)

让我澄清一些事情。

以下代码:

   fullTextSession.createIndexer().startAndWait();

不是要重建整个数据库的索引,而是要重建所有已知索引实体的索引。 当然,如果您要对所有实体建立索引,那么这意味着它将重新索引您的所有数据库,但通常您应该将@Indexed标记为仅需要编入索引的实体。

实际上重新定位

等类型
fullTextSession.createIndexer(A.class,B.class) [..]

是一个好主意,应该可行。

<强> Polymorhipsm

如果类CD是类型A和/或B的子类,则无需明确列出它们。要求索引任何类型也将索引其所有子类型。

你提到&#34;它无法&#34;。你有任何错误吗?是否记录了任何警告?