laravel如何实现数据库的全文搜索功能_Laravel数据库全文搜索实现方法
发布时间 - 2025-11-12 00:00:00 点击率:次使用MySQL FULLTEXT索引或Laravel Scout实现全文搜索。首先在迁移中添加FULLTEXT索引,再用MATCH...AGAINST语法查询;对于高性能需求,推荐安装Scout并集成Meilisearch等引擎,通过search方法实现高效搜索;简单场景可用LIKE但性能差。
在 Laravel 中实现数据库的全文搜索功能,主要依赖于数据库自身的全文索引能力,尤其是 MySQL 的 FULLTEXT 索引。Laravel 本身没有内置全文搜索引擎,但可以方便地结合原生 SQL 或查询构造器来实现这一功能。以下是几种常见的实现方式。
使用 MySQL FULLTEXT 索引
MySQL 支持对 MyISAM 和 InnoDB(MySQL 5.6+)引擎的表创建 FULLTEXT 索引,适合对文本字段进行高效搜索。
步骤如下:
- 在迁移文件中为需要搜索的字段添加 FULLTEXT 索引
- 使用 MATCH...AGAINST 语法执行全文搜索
Schema::create('articles', function ($table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
// 创建 FULLTEXT 索引
$table->fullText(['title', 'content']);
});
在模型或控制器中执行搜索:
Article::whereRaw("MATCH(title, content) AGAINST(? IN NATURAL LANGUAGE MODE)", [$keyword])->get();
其中 IN NATURAL LANGUAGE MODE 表示自然语言模式,也可以使用 BOOLEAN MODE 实现更复杂的条件,如包含/排除关键词。
使用 Laravel Scout(推荐用于大型应用)
对于更复杂、高性能的全文搜索需求,建议使用 Laravel Scout。它是一个 Laravel 的扩展包,提供了与 Algolia、Meilisearch、Typesense 等搜索引擎的集成。
安装 Scout:
composer require laravel/scout
发布配置文件:
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
启用 Scout 到模型:
use Laravel\Scout\Searchable;
class Article extends Model
{
use Searchable;
public function toSearchableArray()
{
return [
'title' => $this->title,
'content' => $this->content,
];
}
}
导入已有数据:
php artisan scout:import "App\Models\Article"
执行搜索:
Article::search($keyword)->get();
Scout 更适合高并发、大数据量场景,支持模糊匹配、拼音搜索、权重设置等高级功能。
简单场景:LIKE 查询(不推荐用于大文本)
对于小项目或测试环境,可使用 LIKE 进行模糊搜索,但性能较差,无法利用索引优化。
Article::where('title', 'like', "%{$keyword}%")
->orWhere('content', 'like', "%{$keyword}%")
->get();
这种方式简单直接,但在数据量大时响应慢,不支持相关性排序。
基本上就这些。如果只是轻量级搜索,用 MySQL FULLTEXT 足够;若追求体验和性能,上 Scout 配合 Meilisearch 是当前主流选择。关键是根据项目规模合理选型。不复杂但容易忽略的是索引的建立和数据同步机制。
# mysql
# php
# word
# laravel
# go
# composer
# 大数据
# app
# ai
# 搜索引擎
# 配置文件
# 同步机制
# sql
# Boolean
# 并发
# 数据库
# 关键词
# 高性能
# 的是
# 这一
# 自然语言
# 尤其是
# 已有
# 但在
# 它是
# 几种
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
北京企业网站设计制作公司,北京铁路集团官方网站?
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
装修招标网站设计制作流程,装修招标流程?
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
bing浏览器学术搜索入口_bing学术文献检索地址
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
JS实现鼠标移上去显示图片或微信二维码
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
实现点击下箭头变上箭头来回切换的两种方法【推荐】
如何在阿里云香港服务器快速搭建网站?
Laravel安装步骤详细教程_Laravel环境搭建指南
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
如何正确选择百度移动适配建站域名?
北京的网站制作公司有哪些,哪个视频网站最好?
如何在阿里云购买域名并搭建网站?
Laravel怎么使用artisan命令缓存配置和视图
如何基于PHP生成高效IDC网络公司建站源码?
如何用PHP快速搭建CMS系统?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
如何快速查询网站的真实建站时间?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
JavaScript如何实现音频处理_Web Audio API如何工作?
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
如何在Windows环境下新建FTP站点并设置权限?
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
Laravel如何保护应用免受CSRF攻击?(原理和示例)
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
如何用花生壳三步快速搭建专属网站?
如何快速生成凡客建站的专业级图册?
如何在自有机房高效搭建专业网站?
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Laravel如何实现本地化和多语言支持?(i18n教程)
UC浏览器如何设置启动页 UC浏览器启动页设置方法
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
怎么用AI帮你设计一套个性化的手机App图标?
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
Laravel观察者模式如何使用_Laravel Model Observer配置
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
七夕网站制作视频,七夕大促活动怎么报名?
新三国志曹操传主线渭水交兵攻略
zabbix利用python脚本发送报警邮件的方法
如何用JavaScript实现文本编辑器_光标和选区怎么处理
如何在不使用负向后查找的情况下匹配特定条件前的换行符
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
如何用好域名打造高点击率的自主建站?
jquery插件bootstrapValidator表单验证详解
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
如何在橙子建站上传落地页?操作指南详解


use Searchable;
public function toSearchableArray()
{
return [
'title' => $this->title,
'content' => $this->content,
];
}
}