При поиске по нескольким индексам можно ли узнать total_found для каждого индекса?

Есть три индекса a, b, c которые являются индексами разных таблиц в бд. При поиске по всем индексам в результате выводится общая информация по запросу. Хочется получить информацию по каждому индексу, сколько в нём получилось вхождений.

Можно конечна сделать три запроса, но может быть есть более оптимальный метод?
  • Вопрос задан
  • 3227 просмотров
Пригласить эксперта
Ответы на вопрос 1
JetMaster
@JetMaster Автор вопроса
Кажется нашёл оптимальное решение, может пригодится кому-нибудь.
В индексы вводим аттрибут index_id и заполняем его следующим образом

source a:db
{
    sql_query = SELECT *,  "a" as index_id FROM table_a 
    sql_query_info  = SELECT * FROM table_a WHERE id=$id
    sql_attr_string = index_id
}


Для остальных индексов поступаем так же, только букву меняем в запросе

На клиенте делаем два запроса: первый получает кол-во вхождений запрос в каждый индекс, второй получает результаты.

$sphinx->SetGroupBy("index_id", SPH_GROUPBY_ATTR, "index_id ASC");
$query_info = $sphinx->Query($query); // 1ый запрос, получаем информацию о запросе

var_dump($query_info);

$sphinx->ResetGroupBy();
$result = $sphinx->Query($query); // 1ый запрос, обычный
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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