hibernate搜索,现有数据无法搜索

时间:2015-12-08 03:13:20

标签: java mysql hibernate lucene hibernate-search

在初始化hibernate搜索期间,我似乎错过了一些东西 我的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();

1 个答案:

答案 0 :(得分:3)

您需要运行mass indexer将所有这些实体添加到索引中,这些实体已添加/更新,而Hibernate Search尚未启用。

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

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

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