Laravel Scout не уважает приказ Алголии

Я пытаюсь использовать Laravel Scout с Algolia в качестве поисковой системы.

Я использую это так

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

Проблема в том, что Algolia возвращает правильный порядок, скажем, некоторые записи с идентификаторами 3, 1, 2, но когда Laravel извлекает записи в базе данных, идентификаторы похожи на 1, 2, 3 (упорядочены по идентификатору).

Я неправильно использую Scout?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
862
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам нужно отредактировать файл поставщика в своем проекте 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();

Привет и спасибо за ответ. Я считаю, что предлагать правку в каталоге поставщиков - это очень неправильно. Пожалуйста, перепишите свой ответ или удалите его, чтобы не запутать новичков. Еще раз спасибо

PeterPan666 06.02.2019 22:43
Ответ принят как подходящий

Что касается проблемы # 341 в репозитории разведчиков, похоже, что это проблема разведчика, которая изучается.

РЕДАКТИРОВАТЬ

Проблема устранена в PR # 369 (версия> 7.0).

Другие вопросы по теме