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)
开始修复
我尝试使用 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)
开始修复