首页 > php框架 > Laravel > 正文

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

穿越時空
发布: 2025-12-09 09:10:20
原创
781人浏览过
Laravel Scout支持Algolia和Meilisearch实现全文搜索。1. 安装Scout并发布配置文件;2. 配置.env中的驱动和密钥;3. 模型引入Searchable trait;4. 导入数据并执行搜索;5. 可自定义索引字段和禁用同步。

laravel如何实现全文搜索_laravel scout集成algolia或meilisearch教程

在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();

你也可以分页显示结果:

Voicepods
Voicepods

Voicepods是一个在线文本转语音平台,允许用户在30秒内将任何书面文本转换为音频文件。

Voicepods 142
查看详情 Voicepods
$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 取决于你是否愿意托管还是自建服务。两者集成方式相似,切换方便,按项目需求选择即可。

以上就是Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号