聚合distinct子句__搜索子句介紹_API參考手冊_開放搜索-阿裏雲
子句說明
聚合子句可以在一定程度上保證展示結果的多樣性,以提升用戶體驗。如一次查詢可以查出很多的文檔,但是如果某個用戶的多個文檔分值都比較高,則都排在了前麵,導致一頁中所展示的結果幾乎都屬於同一用戶,這樣既不利於結果展示也不利於用戶體驗。對此,聚合子句可以對每個用戶的文檔進行抽取,使得每個用戶都有展示文檔的機會。
語法說明
子句語法格式為:dist_key:field,dist_count:1,dist_times:1,reserved:false
參數 | 類型 | 必需 | 取值範圍 | 默認值 | 描述 |
---|---|---|---|---|---|
dist_key | string | 是 | 要聚合的字段 | ||
dist_times | int | 否 | 1 | 抽取的輪數 | |
dist_count | int | 否 | 1 | 一輪抽取的文檔數 | |
reserved | true/false | 否 | true/false | true | 是否保留抽取之後剩餘的文檔。如果為false,為不保留,則搜索結果的total(總匹配結果數)會不準確。 |
update_total_hit | true/false | 否 | true/false | false | 當reserved為false時,設置update_total_hit為true,則最終total_hit會減去被distinct丟棄的的數目(不一定準確),為false則不減。 |
dist_filter | string | 否 | 過濾條件,被過濾的doc不參與distinct,隻在後麵的排序中,這些被過濾的doc將和被distinct出來的第一組doc一起參與排序。默認是全部參與distinct。 | ||
grade | float | 否 | 指定檔位劃分閾值,所有的文檔將根據檔位劃分閾值劃分成若幹檔,每個檔位中各自根據distinct參數做distinct,可以不指定該參數,默認是所有文檔都在同一檔。檔位的劃分按照文檔排序時第一維的排序依據的分數進行劃分,兩個檔位閾值之間用 “|” 分開,檔位的個數沒有限製。例如:1、grade:3.0 :表示根據第一維排序依據的分數分成兩檔,(< 3.0)的是第一檔,(>= 3.0) 的是第二檔;2、grade:3.0|5.0 :表示分成三檔,(< 3.0)是第一檔,(>= 3.0,< 5.0)是第二檔,(>= 5.0)是第三檔。檔位的先後順序和第一維排序依據的順序一致,即如果第一維排序依據是降序,則檔位也是降序,反之亦然。 |
注意事項
- distinct為非必選子句;
- 在distinct中出現的字段必須在定義應用結構的時候勾選“可過濾”;
- 大部分場景下array類型不支持。
distinct uniq插件
如上麵描述,如果reserved=false情況下,會導致搜索結果中的total及viewtotal不準確,如果用戶需要依賴於這個值進行翻頁或者其他處理,則會有問題。為此,係統提供了distinct uniq的插件來解決在dist_times:1,dist_count:1,reserved:false的情況下的total及viewtotal展示不準確。 在kvpairs中添加duniqfield:field即可。
注意:
- field必須與distinct子句中的dist_key一致;
- 該插件僅在在dist_times:1,dist_count:1,reserved:false查詢下起作用,任何參數值有變化都將無效。
- 出於性能考慮,目前該插件最大支持total值為5000,即使真實搜索結果數超過5000,也會返回5000。
示例
查看create_time(創建時間)在1402301230之後且包含“浙大”的文檔,並按照company_id字段進行聚合抽取10輪,每輪取2個結果,抽取後的文檔排在後麵:
query=default:'浙大'&&filter=create_time>1402301230&&distinct=dist_key:company_id,dist_count:2,dist_times:10
查看包含“浙大”的文檔,且按照company_id字段進行聚合抽取1輪,每輪取1個結果,抽取後的文檔丟棄(要求返回結果數為丟棄後的):
query=default:'浙大'&&distinct=dist_key:company_id,dist_count:1,dist_times:1,reserved:false&&kvpairs=duniqfield:company_id
最後更新:2016-11-23 16:04:03
上一篇:
統計aggregate子句__搜索子句介紹_API參考手冊_開放搜索-阿裏雲
下一篇:
自定義kvpair子句__搜索子句介紹_API參考手冊_開放搜索-阿裏雲
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲