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 】 【 网络技术251811 】 【 AI营销90571


相关推荐: 如何在不使用负向后查找的情况下匹配特定条件前的换行符  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  如何彻底删除建站之星生成的Banner?  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  如何用景安虚拟主机手机版绑定域名建站?  南京网站制作费用,南京远驱官方网站?  如何在景安云服务器上绑定域名并配置虚拟主机?  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  如何在阿里云虚拟服务器快速搭建网站?  高性价比服务器租赁——企业级配置与24小时运维服务  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  如何利用DOS批处理实现定时关机操作详解  如何快速生成可下载的建站源码工具?  Laravel如何自定义错误页面(404, 500)?(代码示例)  如何在建站宝盒中设置产品搜索功能?  Laravel集合Collection怎么用_Laravel集合常用函数详解  Laravel如何配置Horizon来管理队列?(安装和使用)  php结合redis实现高并发下的抢购、秒杀功能的实例  高防服务器租用如何选择配置与防御等级?  高端企业智能建站程序:SEO优化与响应式模板定制开发  Laravel如何创建自定义Artisan命令?(代码示例)  Angular 表单中正确绑定输入值以确保提交与验证正常工作  如何用狗爹虚拟主机快速搭建网站?  轻松掌握MySQL函数中的last_insert_id()  实例解析angularjs的filter过滤器  EditPlus 正则表达式 实战(3)  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  西安专业网站制作公司有哪些,陕西省建行官方网站?  Laravel如何实现一对一模型关联?(Eloquent示例)  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  在线制作视频的网站有哪些,电脑如何制作视频短片?  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  Laravel PHP版本要求一览_Laravel各版本环境要求对照  如何在云指建站中生成FTP站点?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  进行网站优化必须要坚持的四大原则  非常酷的网站设计制作软件,酷培ai教育官方网站?  如何快速搭建个人网站并优化SEO?  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解