Я хочу сгруппировать по одному атрибуту, а затем отсортировать эти группы, используя минимальное или максимальное значение другого атрибута, в порядке возрастания или убывания.
Мы определили источник с кучей атрибутов, включая:
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 - которое мы хотим рассматривать просто как число. Когда мы попробовали это с помощью API C #, мы получили ошибку сфинкса о том, что «атрибут sortablename имеет неподдерживаемый тип (type = 3)»
Есть идеи, как сортировать группы таким образом?