При поиске с помощью Laravel Scout я обнаружил, что возвращаются только первые 500 результатов.Я посмотрел базу данных SQLite, которую создает индексирование TNTSearch, и у нее более 500 совпадений.
SELECT COUNT(DISTINCT doclist.doc_id)
FROM wordlist
JOIN doclist ON doclist.term_id = wordlist.id
WHERE wordlist.term = 'qui'
Приведенный выше запрос возвращает 1139
.
This: Model::search('qui')->get()->count()
возвращает 500
.
Я не смог определить, откуда исходит предел 500
.Я подумал, что это могут быть настройки чанкинга в config\scout.php
, но изменение этих значений не влияет на мой вывод.
Класс драйвера (vendor/teamtnt/laravel-scout-tntsearch-driver/src/Engines/TNTSearchEngine.php
) имеет следующие строки:
protected function performSearch(Builder $builder, array $options = [])
{
$index = $builder->index ?: $builder->model->searchableAs();
$limit = $builder->limit ?: 10000;
$builder->limit
устанавливается функцией take()
.Код заставляет меня поверить, что я получил бы до 10 000 результатов, если бы не определил предел.Тем не менее, это: Model::search('qui')->take(750)->get()->count()
по-прежнему возвращает 500
.
В конце я хочу получить полный набор результатов, но я даже не могу изменить предел.
Я открыл проблему в проекте на тот случай, если это ошибка.