我正在使用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.class
和D.class
以及A.class
和B.class
,则无法创建所有实体的索引。而不是它只是为2个实体创建索引,往往无法获取某些记录。所以,请向我推荐一些建议,以避免这个问题。
答案 0 :(得分:1)
让我澄清一些事情。
以下代码:
fullTextSession.createIndexer().startAndWait();
不是要重建整个数据库的索引,而是要重建所有已知索引实体的索引。
当然,如果您要对所有实体建立索引,那么这意味着它将重新索引您的所有数据库,但通常您应该将@Indexed
标记为仅需要编入索引的实体。
实际上重新定位
等类型fullTextSession.createIndexer(A.class,B.class) [..]
是一个好主意,应该可行。
<强> Polymorhipsm 强>
如果类C
和D
是类型A
和/或B
的子类,则无需明确列出它们。要求索引任何类型也将索引其所有子类型。
你提到&#34;它无法&#34;。你有任何错误吗?是否记录了任何警告?