Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程

发布时间 - 2025-12-09 00:00:00    点击率:
Laravel Scout支持Algolia和Meilisearch实现全文搜索。1. 安装Scout并发布配置文件;2. 配置.env中的驱动和密钥;3. 模型引入Searchable trait;4. 导入数据并执行搜索;5. 可自定义索引字段和禁用同步。

在Laravel项目中实现高效的全文搜索,Laravel Scout 是官方推荐的解决方案。它为模型提供了简单、优雅的全文搜索支持,底层可集成 Algolia 或 Meilisearch 等搜索引擎。本文将指导你如何使用 Laravel Scout 集成 Algolia 和 Meilisearch,完*文搜索功能。

安装与配置 Laravel Scout

Laravel Scout 可通过 Composer 安装:

composer require laravel/scout

安装完成后,发布配置文件:

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

这会在 config/scout.php 生成配置文件。默认驱动是 "algolia",你可以根据需要切换为 "meilisearch"。

使用 Scout 集成 Algolia

Algolia 是一个强大的云端搜索服务,适合需要高性能搜索的应用。

1. 配置 Algolia 凭据

前往 Algolia 官网 注册并获取你的 Application ID 和 Admin API Key。然后在 .env 文件中配置:

SCOUT_DRIVER=algolia
ALGOLIA_APP_ID=your_app_id
ALGOLIA_SECRET=your_admin_key
2. 为模型启用搜索功能

在需要搜索的 Eloquent 模型中引入 Searchable trait:

use Laravel\Scout\Searchable;

class Post extends Model
{
use Searchable;
}

该模型的数据将自动同步到 Algolia。

3. 导入已有数据

若数据库中已有数据,需将其导入 Algolia:

php artisan scout:import "App\Models\Post" 4. 执行搜索

在控制器或路由中使用搜索方法:

$results = App\Models\Post::search(' Laravel ')->get();

你也可以分页显示结果:

$results = App\Models\Post::search(' Laravel ')->paginate(15);

使用 Scout 集成 Meilisearch

Meilisearch 是开源、轻量且易于部署的搜索引擎,适合自托管项目。

1. 启动 Meilisearch 服务

使用 Docker 快速启动:

docker run -it -p 7700:7700 getmeili/meilisearch:latest

默认主键为 masterKey,可在启动时指定:

docker run -it -p 7700:7700 -e MEILI_MASTER_KEY=your_master_key getmeili/meilisearch:latest 2. 安装 Meilisearch PHP 客户端

Scout 默认支持 Meilisearch,但确保已安装:

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle 3. 配置 .env 文件 SCOUT_DRIVER=meilisearch
MEILISEARCH_HOST=http://127.0.0.1:7700
MEILISEARCH_KEY=your_master_key
4. 在模型中使用 Searchable

与 Algolia 相同,只需引入 trait:

use Laravel\Scout\Searchable;

class Post extends Model
{
use Searchable;
}
5. 导入数据并搜索 php artisan scout:import "App\Models\Post"

执行搜索:

$results = App\Models\Post::search('教程')->get();

自定义索引字段与搜索行为

默认情况下,Scout 会索引模型的所有属性。你可以重写 toSearchableArray() 方法来自定义数据:

public function toSearchableArray()
{
$array = $this->toArray();

return array_only($array, ['title', 'content', 'author.name']);
}

这样可以控制哪些字段被索引,提升性能和相关性。

如果想在保存模型时避免自动更新索引(例如在测试或批量操作时),可使用:

Post::withoutSyncingToSearch(function () {
// 批量创建或更新操作
});
基本上就这些。Laravel Scout 让全文搜索变得简单,选择 Algolia 还是 Meilisearch 取决于你是否愿意托管还是自建服务。两者集成方式相似,切换方便,按项目需求选择即可。


# php  # laravel  # go  # docker  # composer  # app  # ai  # 路由  # 搜索引擎  # 配置文件  # Array  # require  # class  # public  # 并发  # function  # this  # 数据库  # http  # 自定义  # 你可以  # 已有  # 搜索功能  # 是一个  # 只需  # 将其  # 可在  # 分页 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  如何在阿里云完成域名注册与建站?  Laravel中的withCount方法怎么高效统计关联模型数量  网站制作大概多少钱一个,做一个平台网站大概多少钱?  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  网站制作免费,什么网站能看正片电影?  如何在阿里云购买域名并搭建网站?  如何在七牛云存储上搭建网站并设置自定义域名?  网站图片在线制作软件,怎么在图片上做链接?  Laravel中的Facade(门面)到底是什么原理  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Mybatis 中的insertOrUpdate操作  如何快速选择适合个人网站的云服务器配置?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  手机软键盘弹出时影响布局的解决方法  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  高防服务器租用首荐平台,企业级优惠套餐快速部署  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  如何用景安虚拟主机手机版绑定域名建站?  想要更高端的建设网站,这些原则一定要坚持!  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  动图在线制作网站有哪些,滑动动图图集怎么做?  如何撰写建站申请书?关键要点有哪些?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Swift中循环语句中的转移语句 break 和 continue  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  详解jQuery停止动画——stop()方法的使用  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  Laravel模型事件有哪些_Laravel Model Event生命周期详解  香港服务器WordPress建站指南:SEO优化与高效部署策略  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  如何在IIS中配置站点IP、端口及主机头?  javascript中闭包概念与用法深入理解  企业网站制作这些问题要关注  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  Laravel如何使用Gate和Policy进行授权?(权限控制)  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Laravel如何实现API资源集合?(Resource Collection教程)  独立制作一个网站多少钱,建立网站需要花多少钱?  北京专业网站制作设计师招聘,北京白云观官方网站?  MySQL查询结果复制到新表的方法(更新、插入)