1

我在使用 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

最后,我想获得整个结果集,但我什至无法超越更改限制。


如果它是一个错误,我已经在该项目上打开了一个问题。

4

0 回答 0