algolia/ laravel-scout-algolia-macros
一组宏,用于扩展Laravel Scout以获得更多Algolia功能
Requires
- laravel/scout: 3.0.5 || ~4.0 || ~5.0
This package is auto-updated.
Last update: 2024-09-22 21:49:22 UTC
README
已弃用:请使用Scout Extended - https://github.com/algolia/scout-extended。
Laravel Scout Algolia 宏
一组有用的宏,用于扩展在使用Algolia 引擎时 Laravel Scout 的功能。
此包旨在提供一组宏,以充分利用 Algolia 特定功能。
安装
使用 composer 拉取此包
composer require algolia/laravel-scout-algolia-macros
接下来,您应该在 config/app.php
配置文件的 providers
数组中添加 Algolia\ScoutMacros\ServiceProvider
。
Algolia\ScoutMacros\ServiceProvider::class
用法
计数
计数方法将在请求 Algolia 后返回结果数量。
目的是避免从数据库拉取数据并构建集合。
$nbHits = Model::search('query')->count();
填充
hydrate
方法与标准的 get() 方法类似,但它从 Algolia 索引中填充模型。
默认情况下,Scout 将使用 Algolia 结果的 ID 并从本地数据库中拉取数据以创建集合。
因此,hydrate
将比 get
快得多。
注意:使用此方法时,您必须确保正确同步您的 algolia 索引与数据库,以避免填充过时数据。
限制属性
默认情况下,此方法将添加 Algolia 记录中所有属性到您的模型中。如果您想从模型中删除敏感或不相关的数据,您有两个选项。
您可以在 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
方法为您提供对 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();
贡献
请随意提交问题以请求宏。
提交任何您想要的拉取请求,这样我们就可以讨论它并改进此包。🎉