@IgoNsk
backend web developer

Как в SphinxQL получить значение атрибута, указанного в параметре select?

Имеется запрос, который ищет все группы товаров, которые удовлетворяют поисковому запросу
select
  *

from
  SearchCatalog
  
where
  SearchCatalog.`query` = 'рюшь рюшь*;groupby=attr:rubric_id;select=*, @count as items_count_all;limit=100'

если использовать параметр select, как например у меня
select=*, @count as items_count;
то возникает вопрос - как потом забрать результат из указанного столбца items_count?
Если обращаться к несуществующему полю в таблице - ошибка. Если завести такое поле, то оно при выполнения запроса оно остается пустым.

Кто нибудь сталкивался с подобным?
  • Вопрос задан
  • 3421 просмотр
Пригласить эксперта
Ответы на вопрос 2
@IgoNsk Автор вопроса
backend web developer
Немного дополню.

через Sphinx php API это делается так (версия sphinx - 2.0.8 - linux):
$sphinx_obj->SetGroupBy("rubric_id", SPH_GROUPBY_ATTR, "@count desc");
    $sphinx_obj->SetLimits(0, 100, 100);
    $sphinx_obj->SetSelect('rubric_id, @count as items_count');
    $search_res = $sphinx_obj->Query($query, 'catalog_index');


и такой результат:
[6345248] => Array
  (
    [weight] => 1
    [attrs] => Array
      (
        [rubric_id] => 3763337
        [@count] => 5
      )
  )
[3465352] => Array
  (
    [weight] => 1
    [attrs] => Array
      (
        [rubric_id] => 3756960
        [@count] => 2
      )
  )


В идеале достичь того же через SphinxQL
Ответ написан
Комментировать
@kshmatov
Не надо мешать подходы.
select rubric_id, count(*) as cnt from SearchCatalog where match('рюшь рюшь*') group by rubric_id sort by cnt desc limit 100

Все вполне банально.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы