1

我尝试使用 Laravel Scout 和 Algolia 作为我的搜索引擎。

我这样用

MyModel::search('my query')->paginate()->pluck('id');

问题是,Algolia 返回正确的顺序,假设一些带有 id 的记录,3, 1, 2但是当 Laravel 获取数据库上的记录时,id 就像1, 2, 3(按 id 排序)。

我使用 Scout 错了吗?

4

2 回答 2

0

关于 scout 存储库中的 issue #341,这似乎是一个正在调查的侦察问题。

编辑

该问题现已从 PR #369(版本 > 7.0)得到修复

于 2019-02-06T21:39:17.273 回答
-1

您必须在 laravel 项目中编辑供应商文件:

vendor/laravel/scout/src/Searchable.php

并将getScoutModelsByIds()函数的返回语句编辑为:

    $ids_ordered = implode(',', $ids);

    return $query->whereIn(
        $this->getScoutKeyName(), $ids
    )->orderByRaw(DB::raw("FIELD(id, $ids_ordered)"))->get();
于 2019-02-06T21:09:09.807 回答