在Elasticsearch中,有Query和Filter兩種不同的Context
- QueryContext:相關性算分
- FilterContext:不需要算分(YesorNo),可以利?Cache,獲得更好的性能
一、一個條件組合查詢例子:
假設要搜索?本電影,包含了以下?些條件:
●評論中包含了Guitar,?戶打分?于3分,同時上映?期要在1993與2000年之間
檢索邏輯解析:
這個搜索其實包含了3段邏輯,針對不同的字段
●評論字段中要包含Guitar / ?戶評分?于3 / 上映?期?期需要在給定的范圍
●同時包含這三個邏輯,并且有?較好的性能?
●復合查詢:boolQuery
二、bool查詢
一個bool查詢,是一個或者多個查詢子句的組合
- 總共包含四種子句。 其中2種會影響算分,2種不會影響算分
-
相關性并不只是全?本檢索的專利。也適?于yes|no的?句,匹配的?句越多,相關性評分越?。如果多條查詢?句被合并為?條復合查詢語句,?如bool查詢,則每個查詢?句計算得出的評分會被合并到總的相關性評分中。
image.png
2.1 bool查詢語法
image.png
三、如何解決結構化查詢 --- “包含而不是相等”的問題
增加count字段,使用bool查詢解決,從業務?度,按需改進Elasticsearch數據模型
image.png
四、Filter Content -- 不影響算分
image.png
五、Query Content -- 影響算分
image.png
六、bool嵌套
image.png
七、查詢語句的結構,會對相關度算分產生影響
- 同一層級下的競爭嵌套,具有相同的權重
- 內層嵌套權重的總和等于外層同一級的
-
通過嵌套bool查詢,可以改變對算分的影響
image.png
八、Boosting是控制相關度的一種手段
- 索引,字段 或是查詢子條件
- 參數 boost的含義
●當boost> 1時,打分的相關度相對性提升
●當0< boost < 1時,打分的權重相對性降低
●當boost< 0時,貢獻負分
image.png
九、Boosting Query 例子
要求蘋果公司的產品信息優先
image.png
兩種實現查詢的方式
image.png
相關閱讀