使用MacFJA/php-redisearch库实现聚合函数withApplies相关功能求助
解决方法
你需要补全第二个APPLY规则,同时调整addGroupBy的配置传入求和聚合规则即可,调整后的代码如下:
use MacFJA\RediSearch\Aggregate\Reducer\Sum; $query = '@geofield:[-83.81373 34.3755452645611 20 mi]'; $resultAggregate = $aggregate ->withIndexName('indexName') // 移除原参数末尾多余的空格,避免索引匹配错误 ->withLoad(['geofield', 'cc_sum']) // if_fat字段如果没有用到可以删除,需要的话保留即可 ->withQuery($query) ->withApplies([ // 原有第一个APPLY规则 '@cc_sum * ( 20 - (geodistance(@geofield, -83.81373, 34.3755452645611)) / 20)' => 'ccSumCalcValue', // 新增第二个APPLY规则,对应原生的APPLY 1 as test '1' => 'test' ]) ->addGroupBy( ['test'], // 按test字段分组,对应原生GROUPBY 1 @test [new Sum('@ccSumCalcValue', 'weightedSum')] // 求和聚合规则,对应原生REDUCE SUM逻辑 ) ->execute();
调整说明
withApplies支持传入多个键值对,每个键对应计算表达式、值对应别名,添加1 => 'test'即可实现第二个APPLY逻辑addGroupBy方法第二个参数为聚合规则数组,传入Sum类实例即可实现按字段求和、指定别名的需求
内容的提问来源于stack exchange,提问作者Mahe Krish
相关产品推荐
相关产品推荐

