开发者社区> 问答> 正文

PhpSDK的搜索如何操作?(16)



添加distinct排序信息


例如:检索关键词“手机”共获得10个结果,分别为:doc1,doc2,doc3,doc4,doc5,doc6, doc7,doc8,doc9,doc10。其中前三个属于用户A,doc4-doc6属于用户B,剩余四个属于用户C。
如果前端每页仅展示5个商品,则用户C将没有展示的机会。但是如果按照user_id进行抽取,每轮抽
取1个,抽取2次,并保留抽取剩余的结果,则可以获得以下文档排列顺序:doc1、doc4、doc7、
doc2、doc5、doc8、doc3、doc6、doc9、doc10。可以看出,通过distinct排序,各个用户的
商品都得到了展示机会,结果排序更趋于合理。
更多说明请参见 API distinct子句

请求参数

参数名称类型描述
keystring为用户用于做distinct抽取的字段,该字段要求建立Attribute索引。
distCountint为一次抽取的document数量,默认值为1。
distTimesint为抽取的次数,默认值为1。
reservedstring为是否保留抽取之后剩余的结果,true为保留,false则丢弃,丢弃时totalHits的个数会减去被distinct而丢弃的个数,但这个结果不一定准确,默认为true。
distFilterstring为过滤条件,被过滤的doc不参与distinct,只在后面的 排序中,这些被过滤的doc将和被distinct出来的第一组doc一起参与排序。默认是全部参与distinct。
updateTotalHitstring当reserved为false时,设置update_total_hit为true,则最终total_hit会减去被distinct丢弃的的数目(不一定准确),为false则不减;默认为false。
maxItemCountint设置计算distinct时最多保留的doc数目。
gradenumber指定档位划分阈值。


函数定义

function addDistinct($key, $distCount = 0, $distTimes = 0,$reserved = '', $distFilter = '', $updateTotalHit = '',$maxItemCount = 0, $grade = '')

使用示例

//每次抽取3条文档,抽取4次,丢掉抽取之后的结果,并且更新搜索结果中总文档的个数$search_obj->addDistinct($key, 3, 4, 'false', '', 'true');

展开
收起
轩墨 2017-10-25 13:33:03 1694 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
《开放搜索查询分析服务架构分享》 立即下载
阿里云搜索产品年度升级发布 立即下载
基于 Elasticsearch 电商搜索 立即下载