摘要:寫在前面你是否在檢索千百萬級數據時為性能和速度而擔憂呢,即使優化了,創建了數據庫索引,還是不盡如人意呢下面就主要介紹如何集成是法國初創公司為你提供毫秒級的數據庫實時搜索服務,天下武功無堅不摧,唯快不破。本文基于,其他版本大同小異。
寫在前面
你是否在檢索千百萬級數據時為性能和速度而擔憂呢,即使優化了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...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26022.html
摘要:本文經授權轉自社區說明發布臨近,大體構建已經完成,文檔整理完成后即可發布。附帶了一個響應式郵件模板,通知類中唯一需要做的就是像下面這樣發送消息錯誤處理是一個可選的擴展包,提供了完整可用的服務。 本文經授權轉自 PHPHub 社區 說明 Laravel 5.3 發布臨近,大體構建已經完成,文檔整理完成后即可發布。 下面是對 Laravel 5.3 新特性的整理,不完整列表。 1、全文搜...
摘要:寫在前面以下簡稱是一個實時的分布式搜索和分析引擎。在搜索引擎方面,不僅僅有,像另一篇提到的,還有等等,這里不做評價和比較,本篇主要介紹中如何使用。首選必須安裝有,請參考。本文基于,其他版本大同小異。 寫在前面 Elasticsearch(以下簡稱es)是一個實時的分布式搜索和分析引擎。 在搜索引擎方面,不僅僅有Elasticsearch,像另一篇提到的Algolia,還有sphinx、...
摘要:導語全文搜索是很重要的功能,實現的方式也有很多種。以下通過和實現。是用開發的,并在許可證下作為開源軟件發布。官方客戶端在和許多其他語言中都是可用的。根據的排名顯示,是最受歡迎的企業搜索引擎,其次是,也是基于。 導語 全文搜索是很重要的功能,實現的方式也有很多種。以下通過 Laravel Scout 和 Elasticsearch 實現。先來看下各自的介紹 Laravel Scout 為...
閱讀 906·2021-09-03 10:42
閱讀 1516·2019-08-30 15:56
閱讀 1451·2019-08-29 17:27
閱讀 877·2019-08-29 15:25
閱讀 3163·2019-08-26 18:27
閱讀 2486·2019-08-26 13:41
閱讀 1893·2019-08-26 10:39
閱讀 1583·2019-08-23 18:36