搜索推荐:
类似百度,用户在输入时,自动带出可能要搜索的关键词。
一般的实现方式是通过前缀匹配:
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
{