單字串查詢

2021-09-11 22:48:46 字數 1206 閱讀 9809

put /my_index/my_type/1

put /my_index/my_type/2

現在執行以下bool查詢:

},}]

}}

}

但是我們發現查詢的結果是文件 1 的評分更高:

},}

]}

為了理解導致這樣的原因, 需要回想一下bool是如何計算評分的:

它會執行should語句中的兩個查詢。

加和兩個查詢的評分。

乘以匹配語句的總數。

除以所有語句總數(這裡為:2)。

文件 1 的兩個欄位都包含brown這個詞,所以兩個match語句都能成功匹配並且有乙個評分。文件 2 的body字段同時包含brownfox這兩個詞,但title字段沒有包含任何詞。這樣,body查詢結果中的高分,加上title查詢中的 0 分,然後乘以二分之一,就得到比文件 1 更低的整體評分。

在本例中,titlebody欄位是相互競爭的關係,所以就需要找到單個 最佳匹配 的字段。

如果不是簡單將每個欄位的評分結果加在一起,而是將 最佳匹配 欄位的評分作為查詢的整體評分,結果會怎樣?這樣返回的結果可能是: 同時 包含brownfox的單個欄位比反覆出現相同詞語的多個不同欄位有更高的相關度。

不使用bool查詢,可以使用dis_max即分離 最大化查詢(disjunction max query) 。分離(disjunction)的意思是 或(or) ,這與可以把結合(conjunction)理解成 與(and) 相對應。分離最大化查詢(disjunction max query)指的是: 將任何與任一查詢匹配的文件作為結果返回,但只將最佳匹配的評分作為查詢的評分結果返回 :

},}]

}}

}

得到我們想要的結果為:

},}

]}

單字串多欄位查詢 Multi Match

三種場景 最佳字段 best fields 當欄位之間相互競爭,相互關聯。例如 title 和 body 這樣的字段。評分來 最匹配字段 多數字段 most fields 處理英 內容時 種常 的 段是,在主欄位 english analyzer 抽取詞 加 同義詞,以 匹配更多的 檔。相同的 本,...

簡單字串

給你乙個由 0 9 組成的字串s 1 s 的長度 100 和乙個正整數n 1 n 3 我們將所有的 0 都看成空格。這樣你就得到幾個分隔開來的字串。輸出第n個字串。題目保證分隔開來的字串的數量大於等於n。input 第一行輸入正整數t 1 t 100 代表t組測試資料。對於每一組測試資料由一行組成 ...

簡單字串比較

題目描述 請使用字串比較函式,比較兩個字串的大小,並按要求輸出比較後的結果。字串最長不超過15個字元。輸入兩個字串str1和str2,如果第乙個字串與第二個字串相等,輸出str1 str2,如果第乙個字串大於第二個字串,輸出str1 str2,如果第乙個字串小於第二個字串,輸出str1 str2。輸...