94.全文搜索(一)
- 本系列文章为
laracasts.com
的系列视频教程——Let's Build A Forum with Laravel and TDD 的学习笔记。若喜欢该系列视频,可去该网站订阅后下载该系列视频, 支持正版 ;- 视频源码地址:github.com/laracasts/Lets-Build-a-...;
- 本项目为一个 forum(论坛)项目,与本站的第二本实战教程 《Laravel 教程 - Web 开发实战进阶》 类似,可互相参照。
本节说明
- 对应视频教程第 94 小节:First Class Search: Scout Review
本节内容
我们下一个功能是对话题内容的全文搜索。我们将会用到 Scout 和 Algolia 这两个工具。首先我们安装 Scout:
$ composer require laravel/scout:^3.0
接着使用 Artisan 命令vendor:publish
生成 Scout 的配置文件。这个命令会在你的config
目录下生成scout.php
配置文件:
$ php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
我们还要配置模型索引:
forum\app\Thread.php
<?php
namespace App;
use App\Events\ThreadReceivedNewReply;
use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;
class Thread extends Model
{
use RecordsActivity,Searchable;
.
.
然后我们安装 Algolia:
composer require algolia/algoliasearch-client-php:^1.27
我们在 Algolia 官网 注册账号,并按顺序添加账号相关配置:
forum\ .env
.
.
ALGOLIA_APP_ID=XXXXXX
ALGOLIA_KEY=XXXXXXXXXXXXXXXXXX
ALGOLIA_SECRET=XXXXXXXXXXXXXXXXXX
forum\config\scout.php
.
.
'algolia' => [
'id' => env('ALGOLIA_APP_ID', ''),
'key' => env('ALGOLIA_KEY'),
'secret' => env('ALGOLIA_SECRET', ''),
],
];
我们将已有话题导入到 Algolia:
$ php artisan scout:import 'App\Thread'
我们设置搜索话题的title
和body
字段:
我们来尝试搜索: