摘要:写在前面你是否在检索千百万级数据时为性能和速度而担忧呢,即使优化了,创建了数据库索引,还是不尽如人意呢下面就主要介绍如何集成是法国初创公司为你提供毫秒级的数据库实时搜索服务,天下武功无坚不摧,唯快不破。本文基于,其他版本大同小异。
写在前面
你是否在检索千百万级数据时为性能和速度而担忧呢,即使优化了sql,创建了数据库索引,还是不尽如人意呢?
下面就主要介绍laravel如何集成Algolia
Algolia是法国初创公司为你提供毫秒级的数据库实时搜索服务,天下武功无坚不摧,唯快不破。记住哦,是毫秒级。
本文基于laravel5.5,其他版本大同小异。
准备工作composer require laravel/scout composer require algolia/algoliasearch-client-php
前往https://www.algolia.com/ 注册账号,初学者可以使用免费版,然后在账户的API Keys菜单获取Application ID和Admin API Key,后面会用到
基本配置在config/app.php文件中的providers数组中加入服务提供者
// Scout全文搜索 LaravelScoutScoutServiceProvider::class,
使用以下命令生成scout配置文件
php artisan vendor:publish --provider="LaravelScoutScoutServiceProvider"
该命令会自动生成config/scout.php文件,然后我们打开.env文件,加入scout的配置
# scout配置 SCOUT_DRIVER=algolia SCOUT_PREFIX= # algolia的Application ID ALGOLIA_APP_ID=xxxxxxxxxx # algolia的Admin API Key ALGOLIA_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxx创建索引
创建模型app/Student.php,为方便后续测试,请先建表和填充数据,可以手动使用sql语句添加数据,也使用laravel自动的数据迁移和填充,可以参考 https://www.tech1024.cn/origi...
toArray(); // Customize array... return $array; } }
php artisan scout:import "AppStudent"
可能会报如下错误
[AlgoliaSearchAlgoliaConnectionException] Hosts unreachable: Resolving timed out after 1000 milliseconds,Resolving timed out after 1000 milliseconds,Resolving timed out after 3000 milliseconds,Resolving tim ed out after 3000 milliseconds
这是由于默认algoliasearch-client配置的连接超时时间为1秒,由于网络速度的原因,我们可以把连接时间修改一下
创建app/Services/Scout/EngineManager.php文件如下
setConnectTimeout(30, 30, 30); return new AlgoliaEngine($algolia); } }
打开app/Providers/AppServiceProvider.php,在boot()中加入以下代码
public function boot() { // …… 省略之前代码 $this->app->singleton(LaravelScoutEngineManager::class, function ($app) { return new AppServicesScoutEngineManager($app); }); }
是不是导入成功了呢?
php artisan scout:import "AppStudent" Imported [AppStudent] models up to ID: 500 Imported [AppStudent] models up to ID: 1000 Imported [AppStudent] models up to ID: 1500 Imported [AppStudent] models up to ID: 2000 Imported [AppStudent] models up to ID: 2500 Imported [AppStudent] models up to ID: 3000 Imported [AppStudent] models up to ID: 3500 Imported [AppStudent] models up to ID: 4000 Imported [AppStudent] models up to ID: 4500 Imported [AppStudent] models up to ID: 5000 Imported [AppStudent] models up to ID: 5500 Imported [AppStudent] models up to ID: 6000 Imported [AppStudent] models up to ID: 6500 Imported [AppStudent] models up to ID: 7000 Imported [AppStudent] models up to ID: 7500 Imported [AppStudent] models up to ID: 8000 Imported [AppStudent] models up to ID: 8500 Imported [AppStudent] models up to ID: 9000 Imported [AppStudent] models up to ID: 9500 Imported [AppStudent] models up to ID: 10000 All [AppStudent] records have been imported.
在https://www.algolia.com账户后... 的菜单中已经有了刚刚导入的students_index索引数据
大功告成$studens = AppStudent::search("成燕")->get(); dd($studens);
可以填充个百万条数据试试,检索速度,是不是比直接查询数据库要快很多呢?
更多用法请查阅官方文档 https://www.algolia.com/doc/a...
不过笔者并不推荐使用algolia检索引擎,毕竟国内的网速太慢,后续笔者会退出laravel和elasticsearch、sphinx相关的资料,请继续关注。
原文 https://www.tech1024.cn/origi...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/26022.html
摘要:本文经授权转自社区说明发布临近,大体构建已经完成,文档整理完成后即可发布。附带了一个响应式邮件模板,通知类中唯一需要做的就是像下面这样发送消息错误处理是一个可选的扩展包,提供了完整可用的服务。 本文经授权转自 PHPHub 社区 说明 Laravel 5.3 发布临近,大体构建已经完成,文档整理完成后即可发布。 下面是对 Laravel 5.3 新特性的整理,不完整列表。 1、全文搜...
摘要:写在前面以下简称是一个实时的分布式搜索和分析引擎。在搜索引擎方面,不仅仅有,像另一篇提到的,还有等等,这里不做评价和比较,本篇主要介绍中如何使用。首选必须安装有,请参考。本文基于,其他版本大同小异。 写在前面 Elasticsearch(以下简称es)是一个实时的分布式搜索和分析引擎。 在搜索引擎方面,不仅仅有Elasticsearch,像另一篇提到的Algolia,还有sphinx、...
摘要:导语全文搜索是很重要的功能,实现的方式也有很多种。以下通过和实现。是用开发的,并在许可证下作为开源软件发布。官方客户端在和许多其他语言中都是可用的。根据的排名显示,是最受欢迎的企业搜索引擎,其次是,也是基于。 导语 全文搜索是很重要的功能,实现的方式也有很多种。以下通过 Laravel Scout 和 Elasticsearch 实现。先来看下各自的介绍 Laravel Scout 为...
阅读 858·2021-09-03 10:42
阅读 1466·2019-08-30 15:56
阅读 1379·2019-08-29 17:27
阅读 843·2019-08-29 15:25
阅读 3092·2019-08-26 18:27
阅读 2443·2019-08-26 13:41
阅读 1849·2019-08-26 10:39
阅读 1416·2019-08-23 18:36