2015-12-08 33 views
0

我似乎在初始化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(); 

回答

3

你需要运行mass indexer所有这些实体添加到已添加/更新,而Hibernate Search的是(还)没有启用索引。

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

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

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

+0

谢谢你,工作。我想我应该RTFM :) – austin

+0

谢谢你亲切的先生 – Boldbayar