Hibernate Search查询名字和姓氏

时间:2018-05-04 13:58:44

标签: hibernate hibernate-search

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

他们已将firstName和lastName字段编入索引。

我希望结果看起来像那样:

搜索:“Robe Pau”

匹配度:

  • Robert Paulsen
  • Paul Robertson

不应匹配:

  • Robert Robertson
  • Robert Hendrix
  • Anna Paulsen

虽然搜索类似“Rob”

应匹配:

  • Robert Paulsen
  • Paul Roberts
  • Rob Roberts

我的代码如下所示:

    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();

我希望有人能够启发我。

1 个答案:

答案 0 :(得分:1)

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

使用简单的查询字符串查询是您的最佳选择,因此您需要添加.withAndAsDefaultOperator(),以便所有搜索到的字词都是必需的。