如何使用带有通配符查询的 Hibernate Search 并输出结果对象列表

Posted

技术标签:

【中文标题】如何使用带有通配符查询的 Hibernate Search 并输出结果对象列表【英文标题】:How to use Hibernate Search with a wildcard query and output the result object list 【发布时间】:2022-01-22 22:01:51 【问题描述】:

我想在 mysql 数据库中使用 hibernate 搜索的 XML 数据中搜索一个字符串,并打印包含该字符串的数据的结果列表。

【问题讨论】:

【参考方案1】:

..成功了

    public List<Object> listFormSubmissionsBySearch(String searchedString) throws InterruptedException 

        Session session = sessionFactory.openSession();
        EntityManager entityManager = session.getEntityManagerFactory().createEntityManager();

        FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
        fullTextEntityManager.createIndexer().startAndWait();

        QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(FormSubmission.class).get();

        org.apache.lucene.search.Query wildcardQuery = queryBuilder
                .keyword()
                .wildcard()
                .onField("data") // name of the field in database
                .matching(searchedString)
                .createQuery();

        List<Object> results = (List<Object>) fullTextEntityManager
                .createFullTextQuery(wildcardQuery, FormSubmission.class)
                .setProjection(ProjectionConstants.THIS, ProjectionConstants.SCORE)
                .getResultList();

// List<Object> flowSubmissions = fullTextEntityManager.createFullTextQuery(wildcardQuery, FlowSubmission.class).getResultList();


        return results;
    

【讨论】:

以上是关于如何使用带有通配符查询的 Hibernate Search 并输出结果对象列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 在 MS-Access 中的查询中使用带有通配符的 LIKE 运算符

使用 Hibernate 时如何打印带有参数值的查询字符串

在数据库中使用带有 H2 的 Hibernate 时出错

如何创建用于查找带有标签的电影的 Hibernate 搜索查询?

Hibernate查询带有ID的外键字段

单表查询