我正在按 (created_at,rate,updated_at..) 對我的彈性搜索搜索結果進行排序,但它使結果變得無關緊要。sort 查詢部分是:
[['_score' => ['order' => 'desc']],['created_at' => ['order' => 'desc']]];
按_score 排序,created_at 的效果真的很低。如果我將其更改為
[['created_at' => ['order' => 'desc']],['_score' => ['order' => 'desc']]];
結果將完全不同并且按 created_at 排序并且 _score 的效果非常低。我需要類似使用權重為 1 創建的排序和使用權重為 5 的 _score 進行排序,以便我的結果按日期和相關性進行半排序。
示例:我的資料包括 title,rate,created_at like 1:['藍色史詩 tshirt',5,'2021-11-21'] , 2:['紅色長史詩 tshirt',4,'2021-11-20' ] , 3:['epic whitepants',5,'2021-11-22'] , 4:['rainy weather epix',5,'2021-11-23'] 然后我搜索'epic tshirt'所以分數將是例如 5,4.5,4,1 所以結果順序將是 1 然后 2 然后 3 但是當我在搜索后使用 created_at 對其進行排序時,結果順序將是 4 然后 3 然后 2 然后 1 和 4 甚至沒有包括“史詩T恤”。在我腦海中的結果是 3 然后是 2 然后是 1 然后是 4 所以我的結果是相關的并由 created_at 排序(不是完全排序但 created_at 對它們有影響)在按速率排序時會發生同樣的事情。
uj5u.com熱心網友回復:
我找到的唯一解決方案是設定 min_score 以便洗掉與搜索查詢無關的結果,然后使用我喜歡的欄位進行排序,這樣就不會有不相關的結果。此解決方案的唯一問題是,如果您的搜索查詢與您的資料不接近,您將不會在沒有 min_score 的情況下獲得任何結果,如果沒有相關結果,您至少會得到一些不相關的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/365807.html
標籤:弹性搜索
