首页 > 解决方案 > 未指定 hibernate.search.lucene_version:使用 LUCENE_CURRENT

问题描述

我正在使用带有 Spring Boot 的 Hibernate Search。我对 Hibernate Search 没有任何特殊配置。它只是在应用程序启动时显示警告。如何指定 hibernate.search.lucene_version?

我的 SearchService 类(唯一使用 Hibernate Search 的地方):

@Service
public class SearchService {

    private FullTextEntityManager fullTextEntityManager;
    private QueryBuilder queryBuilder;

    @Autowired
    public SearchService(EntityManager entityManager) {
        entityManager = entityManager.getEntityManagerFactory().createEntityManager();
        fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
    }

    @PostConstruct
    public void initialize() throws InterruptedException {
        fullTextEntityManager.createIndexer().startAndWait();
        queryBuilder = fullTextEntityManager.getSearchFactory()
                .buildQueryBuilder().forEntity(Post.class).get();
    }

    public List<Post> searchByQuery(String query) {
        org.apache.lucene.search.Query luceneQuery = queryBuilder.phrase()
                .withSlop(5)
                .onField("title")
                .sentence(query)
                .createQuery();
        Query jpaQuery = fullTextEntityManager.createFullTextQuery(luceneQuery, Post.class);
        return (List<Post>) jpaQuery.setMaxResults(20).getResultList();
    }
}

标签: javaspringhibernatespring-boothibernate-search

解决方案


在您的 Spring Boot 配置文件中,为任何 Hibernate ORM/Hibernate Search 属性添加前缀spring.jpa.properties..

所以在一个application.properties文件中:

spring.jpa.properties.hibernate.search.lucene_version LATEST

在一个application.yaml文件中:

spring.jpa.properties:
    hibernate.search:
        lucene_version: LATEST

使用您认为合适的任何值来代替LATEST. 可用值是 中常量的名称org.apache.lucene.util.Version

另请参阅Hibernate Search 中有关此特定主题的文档

更新

在 Hiberante Search 6 中,此属性已变为:

spring.jpa.properties.hibernate.search.backend.lucene_version=LATEST

另请参阅Hibernate Search 6 中有关此特定主题的文档


推荐阅读