Работа с распределенными индексами

Это расширение использует запрос DESCRIBE для получения информации о структуре индекса Sphinx (имена полей и типы). Однако для распределенных индексов это не всегда возможно. Схема такого индекса может быть найдена только, если его объявление содержит в списке один доступный локальный индекс. Например:

index item_distributed
{
    type = distributed

    # local index :
    local = item_local

    # remote indexes :
    agent = 127.0.0.1:9312:remote_item_1
    agent = 127.0.0.1:9313:remote_item_2
    # ...
}

Рекомендуется иметь по крайней мере один локальный индекс в объявлении распределенного индекса. Вы не обязаны его фактически использовать - этот локальный индекс может быть пустым, он необходим только для объявления схемы.

Тем не менее, разрешено указывать распределенный индекс без локального. Для такого индекса будет использоваться схема-заглушка по умолчанию. Однако в этом случае автоматическое преобразование типов для полей индекса будет недоступно, и вы должны выполнить типизацию данных самостоятельно. Например:

use yii\sphinx\Query;

// распределенный индекс с локальным
$rows = (new Query())->from('item_distributed_with_local')
    ->where(['category_id' => '12']) // отлично работает строка `'12'` - преобразуется в целое число `12`
    ->all();

// распределенный индекс без локального
$rows = (new Query())->from('item_distributed_without_local')
    ->where(['category_id' => '12']) // produces SphinxQL error: 'syntax error, unexpected QUOTED_STRING, expecting CONST_INT'
    ->all();

$rows = (new Query())->from('item_distributed_without_local')
    ->where(['category_id' => (int)'12']) // необходимо выполнить приведение типов
    ->all();