部分匹配 (三) -(match_phrase_prefix)查询期间的即时搜索

本文探讨了Elasticsearch中match_phrase_prefix查询的使用方法及其资源消耗问题。通过设置max_expansions参数,可以有效限制前缀扩展的影响,提高查询效率。

第一步:和match_phrase类似,区别在于第二步

GET /my_index/my_type/_search

{

"query": {

"match_phrase_prefix": {

"title": "The quick brown f"

}

}

}

 

 

 

 

第二步:

在第一步中,查询字符串中的最后一个单词总是会被当做一个前缀。

在之前介绍prefix查询的时候,我们谈到了prefix查询的一些需要注意的地方 - prefix查询时如何消耗资源的。在使用match_phrase_prefix查询的时候,也面临着同样的问题。一个前缀a你能够匹配非常非常多的词条。匹配这么多的词条不仅会消耗很多资源,同时对于用户而言也是没有多少用处的。

我们可以通过将参数max_expansions设置成一个合理的数值来限制前缀扩展(Prefix Expansion)的影响,比如50:

 

GET /my_index/my_type/_search

{

"query": {

"match_phrase_prefix": {

"title": {

"query": "The quick brown",

"max_expansions": 50

}

}

}

}

max_expansions参数会控制能够匹配该前缀的词条的数量。它会找到首个以bl开头的词条然后开始收集(以字母表顺序)直到所有以bl开头的词条都被遍历了或者得到了比max_expansions更多的词条。

不要忘了在用户每敲入一个字符的时候,该查询就要被执行一次,因此它的速度需要快。如果第一个结果集不符合用户的期望,那么他们就会继续输入直到得到他们需要的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值