How can I use attributesToHighlight Meilisearch feature with Laravel Scout?
I am able to get results in _formatted attribute when I do:
Page::search($search, function ($meilisearch, string $query, array $options) {
$options['attributesToHighlight'] = ['content'];
return $meilisearch->search($query, $options);
})->raw()
But _formatted attribute disappears when I use pagination like:
Page::search($search, function ($meilisearch, string $query, array $options) {
$options['attributesToHighlight'] = ['content'];
return $meilisearch->search($query, $options);
})
->paginate(5)
As a workaround, I'm using the following code to get the formatted content :
Page::search(request('search') ?? "", function ($meilisearch, string $query, array $options) {
$options['attributesToHighlight'] = ['content'];
$options['attributesToCrop'] = ['content'];
return $meilisearch->search($query, $options);
})->paginateRaw(5)->withQueryString()->through(function ($value, $key) {
if ($key == 'hits') {
return array_map(fn($item) => [
'book_id' => $item['book_id'],
'book_name' => Book::find($item['book_id'])->name,
'page_id' => $item['id'],
'page_no' => $item['no'],
'page_content' => $item['_formatted']['content'],
], $value);
}
return $value;
})