首页 > 解决方案 > Hibernate Search 查询名字和姓氏

问题描述

我正在使用 Hibernate Search 在我的数据库中查找人。

他们已经索引了 firstName 和 lastName 字段。

我想要看起来像这样的结果:

搜索:“长袍保罗”

匹配:

不应该匹配:

虽然像“Rob”这样的搜索

应该匹配:

我的代码如下所示:

    FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);

    Query query = fullTextEntityManager
        .getSearchFactory()
        .buildQueryBuilder()
        .forEntity(Customer.class)
        .overridesForField("firstName", "edgeNGram_query")
        .overridesForField("lastName","edgeNGram_query")
        .get()
        .simpleQueryString()
        .onFields("firstName","lastName")
        .matching(text)
        .createQuery();

我希望有人能启发我。

标签: hibernatehibernate-search

解决方案


考虑到搜索很简单,因为您只匹配名字和姓氏,我将解析输入并*在每个标记(如果尚未存在)之后添加一个以触发通配符搜索。

使用简单的查询字符串查询是要走的路,所以你走在正确的轨道上,但你需要添加一个.withAndAsDefaultOperator(),以便所有搜索的单词都是必需的。


推荐阅读