hibernate.search.lucene_version 未指定:使用 LUCENE_CURRENT

hibernate.search.lucene_version was not specified: using LUCENE_CURRENT

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

My SearchService class(唯一使用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();
    }
}

在您的 Spring 引导配置文件中,为任何 Hibernate ORM/Hibernate 搜索 属性 添加前缀 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.

中常量的名称

另见 the documentation about this specific topic in Hibernate Search

更新

在 Hiberante Search 6 中,这个 属性 变成了:

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

另见 the documentation about this specific topic in Hibernate Search 6

另一个解决方案是在类路径中创建 hibernate.properties 文件(我把它放在我的 application.properties 文件旁边)并在其中插入 hibernate.search.lucene_version LATEST