Spring Data ElasticSearch 实现相似度查询

在使用ElasticSearch时,有时会遇到这样的类似的业务场景:检索与给定手机号相似的人,例如给定手机号18000000000,系统需检索出诸如手机号为18000000001,18000000002,18100000001等等相似的人的信息。就以上的业务场景,我们使用ElasticSearchFuzzy Query来实现手机号的相似度检索。本例使用的spring boot版本为2.0.6.RELEASE,spring-boot-starter-data-jest版本为3.1.2.RELEASE

1.前期准备工作

  • Entity:
@Document(indexName = "person", type = "person", shards = 3, replicas = 1)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
    @Id
    private String phoneNum;
    private String name;
    private String gender;
    private Integer age;
}

  • Repository:
public interface PersonRepository extends ElasticsearchRepository<Person, Long> {

}

2.构造Fuzzy Query查询条件

QueryBuilder queryCondition = QueryBuilders.fuzzyQuery("phoneNum", fuzzyPhoneNum).fuzziness(Fuzziness.AUTO);
personRepository.search(queryCondition);

说明:

  • QueryBuilders.fuzzyQuery('字段名', 字段值)
  • fuzziness()方法以编辑距离为入参,取值有四种:0,1,2,‘AUTO’

源码地址:https://github.com/a479159321/elasticsearch-fuzzy-query

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值