Laravel Scout 不尊重 Algolia 的命令

Laravel Scout does not respect Algolia's order

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

我是这样用的

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

问题是,Algolia returns 正确的顺序让我们说一些 ID 为 3, 1, 2 的记录,但是当 Laravel 获取数据库中的记录时,ID 就像 1, 2, 3(按id排序)。

我是不是用错了 Scout?

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

vendor/laravel/scout/src/Searchable.php

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

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

    return $query->whereIn(
        $this->getScoutKeyName(), $ids
    )->orderByRaw(DB::raw("FIELD(id, $ids_ordered)"))->get();

关于 scout 存储库上的问题 #341,似乎是一个正在调查的 scout 问题。

编辑

问题现已从 PR #369(版本 > 7.0)

开始修复