ES按名稱查詢資料時,相同名稱的資料評分不同問題

2021-10-09 02:48:48 字數 414 閱讀 5193

問題背景:我在做es查詢人員資訊的時候,按照人員姓名模糊查詢,需要按照匹配度降序排序,並按照年齡降序排序

問題現象:相同名稱的人員,比如馬雲,匹配度不同,導致展示的時候,年齡小的馬雲卻排在了年齡大的馬雲之前,因為年齡小的馬雲評分高

問題原因:es索引是分片儲存的,查詢計算評分的時候,是每個分片單獨計算的,所以會出現相同名稱的人員評分不同的問題、

解決方案:

1、與產品溝通,當資料量足夠大時,每個分片資料近似相同,則各個分片計算出來的評分會很相近

2、查詢的時候增加查詢條件(dfs_query_then_fetch),不讓各個分片單獨計算得分,而是統一計算,這樣會有一定的效能影響,官方文件也不建議這麼做

searchrequest.searchtype("dfs_query_then_fetch");

ES按名稱查詢資料時,相同名稱的資料評分不同問題

問題原因 es索引是分片儲存的,查詢計算評分的時候,是每個分片單獨計算的,所以會出現相同名稱的人員評分不同的問題 解決方案 1 與產品溝通,當資料量足夠大時,每個分片資料近似相同,則各個分片計算出來的評分會很相近 2 查詢的時候增加查詢條件 dfs query then fetch 不讓各個分片單獨...

呼叫相同名稱的基函式!

123 4567 8910int main 注意,當你在派生類中重新定義乙個函式,匯出函式不繼承訪問說明符的函式具有相同的名稱在基類。它使用任何訪問說明符是在派生類中定義的。因此,在基類中定義為私有的函式可以在派生類中重新定義為公,或者反之亦然!新增到現有的功能 有時我們不想完全替換基類的功能,但要...

實現按名稱遞迴查詢控制項的方法WinForm

關鍵 如下 向下遞迴查詢控制項 查詢控制項的父容器控制項 查詢控制項名稱 若沒有查詢到返回null public static control downrecursivefindcontrol this control parentcontrol,string findctrlname else r...