【ElasticSearch】搜索推荐

本文介绍了ElasticSearch中实现搜索推荐的方法,重点讨论了ngram的应用和优势,以及在实际操作中如何建立mapping,使用match_query与phrase_match的区别,并提供了相关优化技巧,包括rescoring重计分来提升性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搜索推荐:
类似百度,用户在输入时,自动带出可能要搜索的关键词。

一般的实现方式是通过前缀匹配:

GET /my_index/my_type/_search 
{
   
  "query": {
   
    "match_phrase_prefix": {
   
      "title": "hello d"
    }
  }
}

但是这种方法根据前缀,然后扫描整个倒排索引的性能太差,不推荐使用。
引出ngram

Ngram:
ngram的推荐原理:
比如输入quick:
quick,五种长度下的ngram:
length=1,q u i c k
length=2,qu ui ic ck
length=3,qui uic ick
length=4,quic uick
length=5,quick

edge ngram:
hello world,hello we可能被拆分成:
h
he
hel
hell
hello

w
wo
wor
worl
world
e

拆分后建立索引,然后搜索的时候根据索引查
比如输入hello w,然后去倒排索引匹配,匹配到的hello world和hello we都是我们需要的结果。

实操:

PUT /my_index
{
   
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值