1. Есть таблица в MySQL
2. Есть индекс для этой таблицы в Sphinx.
3. Нужно отобразить отфильтрованные с помощью (2) данные из (1) в GridView.
4. Для GridView нужен DataProvider над (1).
По факту же дата провайдер должен быть над (2), но получать id, делать доп запрос к (1) и выводить данные из (1).
Это самый первый вариант, который пришел в голову. Но тут не будет работать пагинация. Есть идеи допилить этот вариант, но получается костыль. Хотелось бы все сделать красиво, в рамках фреймворка.
Смотрите. Есть обычный ActiveDataProvider который работает с Query реляционной базы данных. DataProvider автоматически добавляет к Query limit и offset параметры. Для фильтрации данных нужно использовать Sphinx, который возвращает id найденных записей. Limit и offset нужно применять к запросу Sphinx, а не к Query. А сами данные из бд извлекать по id.