Sphinx:使用SetGroupBy使用聚合函数对组进行排序

时间:2010-02-25 14:58:06

标签: php sphinx

我想按一个属性分组,然后使用不同属性的最小值或最大值按升序或降序对这些组进行排序。

我们已经定义了一个包含以下属性的源:

  sql_attr_uint = CategoryId
  sql_attr_str2ordinal = SortableName

如果没有分组,我们可以使用SortableName对结果进行排序(例如,按产品名称按升序或降序排序),例如使用$sphinx->SetSortMode(SPH_SORT_ATTR_DESC, 'SortableName')

当我们尝试按CategoryId进行分组时,我们希望选择具有“最低”名称的产品,然后按该值对组进行排序。我们尝试了这个没有成功:

  $sphinx->SetGroupBy('CategoryId', SPH_GROUPBY_ATTR, 'MIN(SortableName) asc');

在对文档稍加误解后,我们最终尝试了:

  $sphinx->SetSelect('MIN(SortableName) AS FirstName');
  $sphinx->SetGroupBy('CategoryId', SPH_GROUPBY_ATTR, 'FirstName asc');

这也不起作用。

值得注意的是,我们正在尝试使用sql_attr_str2ordinal字段来执行此操作 - 我们希望将其简单地视为数字。当我们使用C#API尝试此操作时,我们收到一个sphinx错误,指出“属性 sortablename 属于不受支持的类型(type = 3)”

知道如何以这种方式对群组进行排序吗?

0 个答案:

没有答案