【问题标题】:Why Mass Indexer is unable to generate indexes for multiple entities?为什么 Mass Indexer 无法为多个实体生成索引?
【发布时间】:2017-09-16 13:54:28
【问题描述】:

我正在使用 Hibernate Lucene 搜索从数据库中获取记录。这是我的代码 sn-p:

   fullTextSession.createIndexer().startAndWait();

它工作正常,但它正在为整个数据库生成索引。我认为不推荐对整个数据库进行索引。在谷歌中搜索后我发现MassIndexer 是官方文档中的解决方案。这里是我的sn-p:

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

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

【问题讨论】:

    标签: spring indexing lucene hibernate-search


    【解决方案1】:

    让我澄清一些事情。

    以下代码:

       fullTextSession.createIndexer().startAndWait();
    

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

    实际上限制了诸如

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

    是个好主意,应该可以。

    多态性

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

    您提到“它无法”。你有什么错误吗?是否记录了任何警告?

    【讨论】:

    • Tq 回复 :)。没有警告和错误显示。当我明确向 createIndexer(A.class,B.class,C.class,D.class) 添加更多实体时没有生成任何输出。简单它给出 0 条记录。但如果我做同样的事情而不通过 createIndexer() 传递任何实体,它会给出预期的输出。顺便说一下,A、B、C、D 是父实体之间没有关系更重要的是,包含路径的重要性会提高性能吗??
    • 抱歉,我从未见过有人报告过这样的问题。您能否阐明您使用的是哪个版本,并在理想情况下创建一个能够重现此问题的测试?您可以在 github 中创建一个,这是一个很好的起点:github.com/hibernate/hibernate-test-case-templates 或者打开一个 JIRA 并附加一个项目。
    • @Sanne.Problem 已解决。我没有在质量索引器中做任何事情。我只是将我的关联更改为双向,即在我的关系的另一边添加了@ContainedIn。在我的万一我不是每次都保存父实体,我在大多数情况下都保存了它的关联子实体。我认为索引没有得到更新。我是否正确这是问题所在?
    • @Sanne。之后我可以获取我的记录。但是如果我正在使用 OneToMany 和 ManyToMany 进行插入、删除或更新。它不会更新新创建的记录索引。最后我还没有发现问题出在哪里。为此我做了一件事。我为该记录手动创建了索引。像 Object obj= fullTextSession.get(A.class, id); fullTextSession.index(obj);现在我正在获取记录。假设我与 MassIndexer 一起手动进行索引,它们对性能有什么影响吗??
    • lucene.version=4.10.4 hibernate.version=4.3.11.Final
    猜你喜欢
    • 2020-03-23
    • 1970-01-01
    • 2013-05-22
    • 2019-01-31
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多