18、基于slop参数实现近似匹配以及原理剖析
query string,搜索文本中的几个term,要经过几次移动才能与一个document匹配,这个移动的次数,就是slop 。
-
slop的phrase match,就是proximity match,近似匹配
-
如果指定slop,那么就允许搜索关键词进行移动,来尝试与doc进行匹配
-
搜索关键词k,可以有一定的距离,但是靠的越近,越先搜索出来,proximity match
一个query string经过几次移动之后可以匹配到一个document,然后设置slop .
假设有个doc
hello world, java is very good, spark is also very good.
使用 match_phrase query 来搜索 java spark ,是肯定搜索不到的, 因为 match_phrase query 会将java spark 作为一个整体来查找。如果我们指定了slop,那么就允许java spark进行移动,来尝试与doc进行匹配

slop,就是3,因为java spark这个短语,spark移动了3次,就可以跟一个doc匹配上了 。
slop的含义,不仅仅是说一个query string terms移动几次,跟一个doc匹配上。一个query string terms,最多可以移动几次去尝试跟一个doc匹配上
slop,设置的是3,那么就ok
GET /forum/article/_search { "query": { "match_phrase": { "title": { "query": "java spark", "slop": 3 } } } }
就可以把刚才那个doc匹配上,那个doc会作为结果返回
立志如山 静心求实
浙公网安备 33010602011771号