非推奨: このリポジトリの使用は非推奨です。代わりに Scout Extended - https://github.com/algolia/scout-extended を使用してください。
Algolia エンジンを使用するときに Laravel Scout の機能を拡張するための便利なマクロのコレクション。
このパッケージは、Algolia 固有の機能を利用するためのマクロのセットを提供することを目的としています。
Composer を使用してパッケージをプルする
composer require algolia/laravel-scout-algolia-macros
次に、 AlgoliaScoutMacrosServiceProvider
config/app.php
構成ファイルのproviders
配列に追加する必要があります。
Algolia ScoutMacros ServiceProvider ::class
count
count メソッドは、Algolia へのリクエスト後に結果の数を返します。
重要なのは、データベースからデータを取得してコレクションを構築しないようにすることです。
$ nbHits = Model :: search ( ' query ' )-> count ();
hydrate
hydrate
メソッドは標準の get() メソッドと似ていますが、Algolia インデックスからモデルをハイドレートする点が異なります。
デフォルトでは、Scout は Algolia からの結果の ID を使用し、ローカル データベースからデータを取得してコレクションを作成します。
したがって、 hydrate
get
よりもはるかに高速になります。
注: この方法を使用する場合は、古いデータが作成されるのを避けるために、アルゴリズム インデックスとデータベースの同期が正しく保たれていることを確認する必要があります。
デフォルトでは、このメソッドは Algolia のレコードのすべての属性をモデルに追加します。機密データまたは無関係なデータをモデルから削除する場合、2 つのオプションがあります。
Algolia ダッシュボードで取得可能な属性のリストを設定できます。この場合、Algolia はすべてのsearchableAttributes
を検索しながら、これらの属性のみを返します。
モデルクラスのlaravel $guarded
属性を使用することもできます。たとえば、コレクション内で_h
属性を表示したくない場合は、次のようになります。
namespace App ;
use Illuminate Database Eloquent Model ;
use Laravel Scout Searchable ;
class People extends Model
{
use Searchable ;
protected $ guarded = [ ' _highlightResult ' ];
}
with
with
メソッドを使用すると、Algolia オプション パラメーターに完全にアクセスできます。これにより、algolia PHP ライブラリを直接使用する場合とまったく同じように検索パラメータをカスタマイズできます。
$ result = Model :: search ( '' )
-> with ([ ' hitsPerPage ' => 30 ])
-> get ();
$ filters = [
' averge_ratings >= 3 ' ,
' total_reviews >= 1 '
];
$ filterString = implode ( ' AND ' , $ filters );
$ params = [
' aroundLatLng ' => $ lat . ' , ' . $ lon ,
' hitsPerPage ' => 30 ,
' page ' => 0 ,
' aroundRadius ' => 30000 , //30km
' aroundPrecision ' => 200 , //200 Meters
' getRankingInfo ' => true , //return ranking information in results
' filters ' => $ filterString // add filters
];
$ result = Model :: search ( '' )-> with ( $ params )-> get ();
aroundLatLng
aroundLatLng
メソッドは、地理位置情報パラメーターを検索リクエストに追加します。座標を使用して点を定義できます。
このメソッドは純粋な糖衣構文であることに注意してください。 with
使用して、より詳細な位置情報 (たとえば、半径など) を指定できます。
// Models around Paris latitude and longitude
Model :: search ( ' query ' )-> aroundLatLng ( 48.8588536 , 2.3125377 )-> get ();
Where句も追加可能
Model :: search ( ' query ' )
-> aroundLatLng ( 48.8588536 , 2.3125377 )
-> where ( ' something_id ' , 1 )
-> get ();
マクロをリクエストするには、お気軽に問題を開いてください。
必要なプル リクエストを開いて、それについて話し合ってパッケージを改善してください。 ?