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会作为结果返回

 

posted on 2020-11-09 23:27  溪水静幽  阅读(254)  评论(0)    收藏  举报