#laravel #full-text-search #laravel-scout #meilisearch
Вопрос:
Я установил и настроил пакет meilisearch Laravel Scout.
Моя Модель:
class Post extends Model
{
use Searchable;
}
Когда я запускаю php artisan scout:import 'AppModelsPost'
его, он возвращается:
Imported [AppModelsPost] models up to ID: 5
All [AppModelsPost] records have been imported.
Но когда я проверяю индекс, он пуст. Почему?
Индекс создается, но данные не импортируются.
Та же конфигурация пакета meilisearch и Scout работает для некоторых других моделей.
Комментарии:
1. Привет! Что возвращает статус обновления? docs.meilisearch.com/reference/api/…
Ответ №1:
Я сам только что столкнулся с этой проблемой и наткнулся на ваш вопрос. Я полагаю, вы не указываете, что должно храниться в индексе, не так ли?
Т. е. в вашей модели вы должны создать toSearchableArray
метод, подобный приведенному ниже…
public function toSearchableArray(): array
{
return [
'name' => $this->name,
];
}
В любом случае, оказывается, что ваш toSearchableArray
метод также должен возвращать первичный ключ в массиве, иначе запись не будет проиндексирована.
public function toSearchableArray(): array
{
return [
'id' => $this->getKey(), // this *must* be defined
'name' => $this->name,
];
}
Комментарии:
1. Спасибо, это исправило мои проблемы 🙂
2. Для этой конкретной модели я скрывал первичный ключ, и удаление его было на месте. Спасибо!
Ответ №2:
Вы можете попробовать установить:
SCOUT_QUEUE=false
Чтобы убедиться, что с вашими очередями нет проблем, и запустите импорт еще раз.
Комментарии:
1. Я пробовал это раньше, и это не сработало.
Ответ №3:
Для индекса вы можете попробовать:
php artisan scout:index posts
Других проблем с вашими очередями нет, и запустите импорт снова.
Если у вас есть SCOUT_QUEUE=true
, то, пожалуйста, начните использовать свою очередь php artisan queue:work --daemon
, и ваши данные начнут импортироваться.