休眠多字段搜索

时间:2019-01-28 13:32:51

标签: elasticsearch lucene hibernate-search

我想对实体进行全文搜索。

当我使用单个关键字但不使用其他关键字时,它可以工作。

        Query luceneQuery = qb
        .keyword()
        .wildcard()
        .onFields("description", "brand" )
        .matching("*" + searchTerm + "*").createQuery();

在一种情况下,我有一个实体,其描述等于“ car”,品牌等于“ ford”

如果查询是“ car”或“ ford”,但不是“ car ford”,则搜索返回预期结果

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

Query query = qb.bool()
            .should( qb.keyword().fuzzy().onField("description").ignoreFieldBridge().matching(searchTerm).createQuery() )
            .should( qb.keyword().fuzzy().onField("color").ignoreFieldBridge().matching(searchTerm).createQuery() )
            .should(qb.keyword().fuzzy().onField("brand").matching(searchTerm).createQuery() )
            .createQuery();