You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Scout集成Meilisearch:如何结合分页设置attributesToHighlight?

在Laravel Scout中使用Meilisearch的attributesToHighlight功能

问题说明

使用Laravel Scout结合Meilisearch时,若调用raw()方法执行搜索并指定attributesToHighlight参数,能正常从返回结果的_formatted属性中获取高亮后的内容:

Page::search($search, function ($meilisearch, string $query, array $options) {
    $options['attributesToHighlight'] = ['content'];
    return $meilisearch->search($query, $options);
})->raw();

但改用paginate()分页方法时,返回结果里的_formatted属性会消失:

Page::search($search, function ($meilisearch, string $query, array $options) {
    $options['attributesToHighlight'] = ['content'];
    return $meilisearch->search($query, $options);
})->paginate(5);

临时解决方法

可以通过paginateRaw()获取原始分页结果,再借助through()方法处理结果集,提取_formatted中的高亮内容:

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;
});

内容的提问来源于stack exchange,提问作者MAMProgr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:08:01