elasticsearch query裏面的slop選項

slop

用過搜索引擎的都知道,輸入一個query,然後會出很多聯想的詞條,如下面:在這裏插入圖片描述
一般來說完全精確短語匹配 或許是過於嚴格了。
也許我們想要包含 “quick brown fox” 的詞條也能夠匹配 “quick fox,” , 儘管情形不完全相同。

我們能夠通過使用 slop 參數將靈活度引入短語匹配中。

slop 參數告訴 match_phrase 查詢詞條相隔多遠時仍然能將文檔視爲匹配 。 相隔多遠的意思是爲了讓查詢和文檔匹配你需要移動詞條多少次?

我們以一個簡單的例子開始吧。 爲了讓查詢 quick fox 能匹配一個包含 quick brown fox 的文檔, 我們需要 slop 的值爲 1:

GET /my_index/my_type/_search
{
    "query": {
        "match_phrase": {
            "title": {
            	"query": "quick fox",
            	"slop":  1
            }
        }
    }
}

在這裏插入圖片描述

儘管在使用了 slop 短語匹配中所有的單詞都需要出現, 但是這些單詞也不必爲了匹配而按相同的序列排列。 有了足夠大的 slop 值, 單詞就能按照任意順序排列了。

爲了使查詢 fox quick 匹配我們的quick brown fox詞條, 我們需要 slop 的值爲 3:
其實也就是,轉化順序一次,然後相隔兩次。slop = 1 + 2;
在這裏插入圖片描述
在這裏插入圖片描述

就是說 slop 在 相隔一個term詞算一次,或者在順序轉化也算一次。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章