我在使用 Laravel Scout 搜索时发现只返回前 500 个结果。我查看了 TNTSearch 索引创建的 SQLite 数据库,它有超过 500 个匹配项。
SELECT COUNT(DISTINCT doclist.doc_id)
FROM wordlist
JOIN doclist ON doclist.term_id = wordlist.id
WHERE wordlist.term = 'qui'
上面的查询返回1139
.
这: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 个结果。但是, this:Model::search('qui')->take(750)->get()->count()
仍然返回500
。
最后,我想获得整个结果集,但我什至无法超越更改限制。
如果它是一个错误,我已经在该项目上打开了一个问题。