【问题标题】:Laravel Scout does not respect Algolia's orderLaravel Scout 不尊重 Algolia 的命令
【发布时间】:2018-12-18 15:53:56
【问题描述】:

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

我是这样用的

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

问题是,Algolia 返回了正确的顺序,比如一些 id 为 3, 1, 2 的记录,但是当 Laravel 获取数据库中的记录时,id 类似于 1, 2, 3(按 id 排序)。

我是不是用错了 Scout?

【问题讨论】:

    标签: laravel algolia laravel-scout


    【解决方案1】:

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

    编辑

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

    【讨论】:

      【解决方案2】:

      您必须在 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();
      

      【讨论】:

      • 您好,感谢您的回复。我认为建议在供应商目录中进行编辑是非常错误的。请重写您的答案或将其删除,以免混淆初学者。再次感谢
      猜你喜欢
      • 2019-02-18
      • 2022-01-14
      • 2017-09-03
      • 2019-08-12
      • 2017-04-30
      • 2017-10-19
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多