如何使用休眠搜索获得部分匹配以及完全匹配

时间:2018-12-18 11:22:56

标签: lucene full-text-search hibernate-search

FullTextEntityManager fullTextEntityManager =Search.getFullTextEntityManager(emanager);
QueryBuilder qb=fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(Person.class).get();
Query statusNotArchieved = qb.keyword().onField("name").matching("John Cena").createQuery();
  

现在,我应该获得结果,其中结果应包含人员姓名   包含John Cena以及任何包含John的短语   或Cena分开。因此,如果“人名”有三行   包含{“ John Cena”,“ John micheal”,“ Micheal Cena”}我希望所有   结果优先考虑John Cena作为第一个结果

1 个答案:

答案 0 :(得分:0)

您给出的查询的行为应与您描述的完全一样:任何包含“ John”或“ Cena”的文档都将被匹配,匹配的两个都将获得更高的评分,并因此出现在结果的顶部。

也就是说,假设您对字段“名称”启用了分析,默认情况下就是这种情况。

如果您有其他行为,请提供更多信息:

  • 您的Person实体的完整代码
  • 用于构建查询的完整代码(您只给出了开头。
  • 您将获得的结果的简短描述:文档,其顺序以及“名称”字段的内容。