You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:45:08