成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Laravel 全文檢索 Scout集成Algolia

Jinkey / 3085人閱讀

摘要:寫在前面你是否在檢索千百萬級數(shù)據(jù)時為性能和速度而擔(dān)憂呢,即使優(yōu)化了,創(chuàng)建了數(shù)據(jù)庫索引,還是不盡如人意呢下面就主要介紹如何集成是法國初創(chuàng)公司為你提供毫秒級的數(shù)據(jù)庫實時搜索服務(wù),天下武功無堅不摧,唯快不破。本文基于,其他版本大同小異。

寫在前面

你是否在檢索千百萬級數(shù)據(jù)時為性能和速度而擔(dān)憂呢,即使優(yōu)化了sql,創(chuàng)建了數(shù)據(jù)庫索引,還是不盡如人意呢?
下面就主要介紹laravel如何集成Algolia

Algolia是法國初創(chuàng)公司為你提供毫秒級的數(shù)據(jù)庫實時搜索服務(wù),天下武功無堅不摧,唯快不破。記住哦,是毫秒級。

本文基于laravel5.5,其他版本大同小異。

準備工作
安裝laravel/scout 和 algolia/algoliasearch-client-php
composer require laravel/scout
composer require algolia/algoliasearch-client-php
注冊algolia的賬號

前往https://www.algolia.com/ 注冊賬號,初學(xué)者可以使用免費版,然后在賬戶的API Keys菜單獲取Application ID和Admin API Key,后面會用到

基本配置

在config/app.php文件中的providers數(shù)組中加入服務(wù)提供者

// 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
創(chuàng)建索引
創(chuàng)建模型并填充數(shù)據(jù)

創(chuàng)建模型app/Student.php,為方便后續(xù)測試,請先建表和填充數(shù)據(jù),可以手動使用sql語句添加數(shù)據(jù),也使用laravel自動的數(shù)據(jù)遷移和填充,可以參考 https://www.tech1024.cn/origi...

toArray();

        // Customize array...

        return $array;
    }
}
把所有現(xiàn)有記錄導(dǎo)入到搜索索引里
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秒,由于網(wǎng)絡(luò)速度的原因,我們可以把連接時間修改一下
創(chuàng)建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);
        });
    }

是不是導(dǎo)入成功了呢?

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賬戶后... 的菜單中已經(jīng)有了剛剛導(dǎo)入的students_index索引數(shù)據(jù)

大功告成
$studens = AppStudent::search("成燕")->get();
dd($studens);

可以填充個百萬條數(shù)據(jù)試試,檢索速度,是不是比直接查詢數(shù)據(jù)庫要快很多呢?

更多用法請查閱官方文檔 https://www.algolia.com/doc/a...

不過筆者并不推薦使用algolia檢索引擎,畢竟國內(nèi)的網(wǎng)速太慢,后續(xù)筆者會退出laravel和elasticsearch、sphinx相關(guān)的資料,請繼續(xù)關(guān)注。

原文 https://www.tech1024.cn/origi...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/26022.html

相關(guān)文章

  • Laravel 5.3 預(yù)熱:10 個你需要知道的變更

    摘要:本文經(jīng)授權(quán)轉(zhuǎn)自社區(qū)說明發(fā)布臨近,大體構(gòu)建已經(jīng)完成,文檔整理完成后即可發(fā)布。附帶了一個響應(yīng)式郵件模板,通知類中唯一需要做的就是像下面這樣發(fā)送消息錯誤處理是一個可選的擴展包,提供了完整可用的服務(wù)。 本文經(jīng)授權(quán)轉(zhuǎn)自 PHPHub 社區(qū) 說明 Laravel 5.3 發(fā)布臨近,大體構(gòu)建已經(jīng)完成,文檔整理完成后即可發(fā)布。 下面是對 Laravel 5.3 新特性的整理,不完整列表。 1、全文搜...

    沈建明 評論0 收藏0
  • Laravel中利用Scout集成Elasticsearch搜索引擎

    摘要:寫在前面以下簡稱是一個實時的分布式搜索和分析引擎。在搜索引擎方面,不僅僅有,像另一篇提到的,還有等等,這里不做評價和比較,本篇主要介紹中如何使用。首選必須安裝有,請參考。本文基于,其他版本大同小異。 寫在前面 Elasticsearch(以下簡稱es)是一個實時的分布式搜索和分析引擎。 在搜索引擎方面,不僅僅有Elasticsearch,像另一篇提到的Algolia,還有sphinx、...

    buildupchao 評論0 收藏0
  • Laravel 基于 Scout 配置實現(xiàn) Elasticsearch (一)- 準備工作

    摘要:導(dǎo)語全文搜索是很重要的功能,實現(xiàn)的方式也有很多種。以下通過和實現(xiàn)。是用開發(fā)的,并在許可證下作為開源軟件發(fā)布。官方客戶端在和許多其他語言中都是可用的。根據(jù)的排名顯示,是最受歡迎的企業(yè)搜索引擎,其次是,也是基于。 導(dǎo)語 全文搜索是很重要的功能,實現(xiàn)的方式也有很多種。以下通過 Laravel Scout 和 Elasticsearch 實現(xiàn)。先來看下各自的介紹 Laravel Scout 為...

    jsyzchen 評論0 收藏0

發(fā)表評論

0條評論

Jinkey

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<