# PHPのフレームワークLaravelとAlgoliaで開発 その4

昨日に引き続き👇の Live Coding Session - Advanced Search with Laravel and Algolia by Nuno Maduro をやっています。

昨日はLaravel ScoutでAlgoliaに連携してPestでテストをするところまでやりました。

今日はtinkerを使ってコマンドラインでキャッキャするところから。

例えば、SQLiteのProductテーブルからデータの件数を取得したり、Algoliaのproducts indexのデータの件数を取得したり、最初の1件目のデータを取得したり、nihilっていうキーワードで検索してみたり。

$ php artisan tinker
Psy Shell v0.10.4 (PHP 7.4.7 — cli) by Justin Hileman
>>> Product::count();
[!] Aliasing 'Product' to 'App\Product' for this Tinker session.
=> 20
>>> Product::search()->count();
=> 20
>>> Product::search()->first();
=> App\Product {#4096
     id: "9",
     title: "Dr.",
     description: "Voluptatem fugiat quas mollitia nihil ut. Laborum dolore repellat est ea dolor occaecati non. Ut voluptas consequatur eaque dolor ad ipsam quia. Corporis distinctio vitae enim.",
     price: "87",
     created_at: "2020-07-20 10:17:50",
     updated_at: "2020-07-20 10:17:50",
   }
>>> Product::search('nihil')->get();
=> Illuminate\Database\Eloquent\Collection {#4097
     all: [
       App\Product {#4055
         id: "16",
         title: "Miss",
         description: "Nihil cum ducimus voluptas recusandae. Qui et et ut aut quibusdam unde. Est est dolorum dolores voluptas impedit dicta omnis. Ipsum totam reiciendis quis temporibus.",
         price: "83",
         created_at: "2020-07-20 10:17:50",
         updated_at: "2020-07-20 10:17:50",
       },

なんというか、実際のクラスにコードを書いてアレやコレやする前に、手元でコマンドラインベースで確かめてから、、っていう開発をRailsの時とかよくやってたので、コレがあるのは便利なんじゃないかな、と。

# Scout Extended

Algolia用に実装が追加されているScout Extendedでは、例えば、scout:flushをすればAlgoliaのインデックスのデータが削除されるし、

$ php artisan scout

                                   
  Command "scout" is not defined.  
                                   
  Did you mean one of these?       
      scout:flush                  
      scout:import                 
      scout:make-aggregator        
      scout:optimize               
      scout:reimport               
      scout:status                 
      scout:sync                 

例えば、optimizeするとscout-products.phpというファイルを生成してくれて、

$ php artisan scout:optimize

 🔎 Optimizing search experience in: [App\Product]

                                                                                                                 
 [OK] Settings file created at: /Users/eijishinohara/2020july/shop/config/scout-products.php

ここでは検索対象attributeとか

'searchableAttributes' => ['title', 'description', 'price'],

customRankingとかやりくりできちゃう

'customRanking' => ['desc(created_at)', 'desc(updated_at)'],

queryLanguagesはあるけど、indexLanguagesが無いっぽいな…笑 👇このファイルっぽいから、後でギッハブでアレしときますかねぇ〜 https://github.com/algolia/scout-extended/blob/master/resources/views/config.blade.php

そして、statusをみると、、リモートの設定がありませんってことなので、、

$ php artisan scout:status

 🔎 Analysing information from: [App\Product]

 1/1 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%

 ------------- ---------- ------------------ --------------- ---------------- 
  Searchable    Index      Settings           Local records   Remote records  
 ------------- ---------- ------------------ --------------- ---------------- 
  App\Product   products   Remote not found   20              20              
 ------------- ---------- ------------------ --------------- ----------------

syncしてから、、

 $ php artisan scout:sync

 🔎 Analysing settings from: [App\Product]

                                                                                                                 
 [OK] Remote settings does not exists. Uploading settings file:                                                  
      /Users/eijishinohara/2020july/shop/config/scout-products.php     

もっかい叩くと反映済み、と。

$ php artisan scout:status

 🔎 Analysing information from: [App\Product]

 1/1 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%

 ------------- ---------- -------------- --------------- ---------------- 
  Searchable    Index      Settings       Local records   Remote records  
 ------------- ---------- -------------- --------------- ---------------- 
  App\Product   products   Synchronized   20              20              
 ------------- ---------- -------------- --------------- ---------------- 

optimizeで設定ファイルを作って、syncでそれを反映させて、statusで状態を確認できる、と。

狙いとしては、Algliaの設定含めて全部GitHubで管理できる、と。気が利いてる感ありますやね 😃

このエントリーをはてなブックマークに追加

Algolia検索からの流入のみConversionボタン表示