Sphinx и Yii2, как правильно задавать limit?

171
17 января 2019, 21:10

Подскажите пожалуйста, есть следующий код:

public function search() {
    $this->load($this->searchParams);
    $query = new Query();
    $items = $query->from('news')
        ->match($this->query)
        ->orderBy(['date_added' => SORT_DESC])
        ->all();
    $items = array_column($items,'id');
    $query = News::find()
        ->where(['in', 'id', $items]);
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
        'sort' => false,
        'pagination' => [
            'pageSize' => 15
        ]
    ]);
    return $dataProvider;
}
  1. Правильно ли я работаю с sphinx? Я передаю ему запрос поиска, получаю массив id и делаю по ним выборку.
  2. Как работать с limit у sphinx? Возвращает только 20 записей... Получать текущую страницу и считать исходя из количества элементов на странице?
  3. Или со sphinx мне надо получать не только id? а полный обьем данных и передавать их в DataProvider?

Заранее спасибо.

Answer 1

1) Лучше установить лимиты и офсеты для запроса в sphinx, но если скорость отображения устраивает и не нужно оптимизировать, то можно оставить так.

2) Можно установить ->limit(-1) либо ->addOptions(['max_matches' => -1]), тогда вернёт все записи. Но есть нюанс их не может быть более чем 65535.

3) Можно в Sphinx добавить данные и выводить их не делая отдельный запрос в БД, для ускорения(оптимизации) вывода, но не нужно забывать что Sphinx это поисковый движок, а не замена текущей БД. И если скорость отображения данных в вашем варианте устраивает заказчика, то оставляйте как есть.

READ ALSO
Вставка значений в select, option

Вставка значений в select, option

Подскажите пожалуйста, есть txt файлФайл имеет данные - html теги (<p>Текст</p><a>Ссылка</a>)

147
Токен. Как определить время, для рефреша токена?

Токен. Как определить время, для рефреша токена?

ТокенКак определить время, для рефреша токена?

144
Как сделать, чтобы консоль принимала не только точку, но и запятую?

Как сделать, чтобы консоль принимала не только точку, но и запятую?

Решил изучать C++ и написал первый простенький калькуляторОн то работает, но проблема вот в чем: когда ввожу первое десятичное число через...

174