我似乎在休眠搜索初始化期间丢失了一些内容。
我的mysql数据库表包含一些现有行,这些行似乎未作为结果的一部分返回
在启动之后,我通过应用程序添加的任何新行似乎都在休眠搜索中返回

我需要返回所有行,包括表中已经存在的行,我需要添加什么才能获得它?

这是我用来查询的代码部分

    // get the full text entity manager
    FullTextEntityManager fullTextEntityManager=Search.getFullTextEntityManager(entityManager);

    //create query using hibernate query DSL
    QueryBuilder queryBuilder=fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(Entity.class).get();

    // actual query
    Query query=queryBuilder.keyword()
            .onFields("col1","col2","col3")
            .matching(searchKeyword)
            .createQuery();

    //wrap Lucene query in hibernate query object
    FullTextQuery jpaQuery=fullTextEntityManager.createFullTextQuery(query, Entity.class);

    return jpaQuery.getResultList();

最佳答案

您需要运行mass indexer,以将尚未(尚未)启用Hibernate Search时已添加/更新的所有那些实体添加到索引中。

这将从数据库中获取所有实体,并更新相应的索引。最简单的形式是这样的:

fullTextEntityManager
    .createIndexer( Entity.class )
    .startAndWait();


参考指南详细介绍了所有用于微调的选项。

10-08 13:25