solier / laravel-fuzzy-search
一个为 Eloquent 模型提供模糊搜索特性的 Laravel 扩展包,以便轻松实现具有拼接属性支持的搜索功能。
Requires
- php: ^7.3|^8.0
- illuminate/database: ^7.0|^8.0|^9.0
Requires (Dev)
- fakerphp/faker: ^1.9.1
- mockery/mockery: ^1.4
- orchestra/testbench: ^6.0||^7.0
- phpunit/phpunit: ^9.0
README
此 Laravel 扩展包为 Eloquent 模型提供了 FuzzySearchable
特性,允许轻松实现具有拼接属性支持的搜索功能。它通过允许更灵活和用户友好的搜索查询(包括部分匹配和拼接字段搜索)来增强 Laravel 应用程序中的搜索体验。
安装
要通过 Composer 安装此包,请运行以下命令
composer require soliyer/laravel-fuzzy-search
请确保您的 Laravel 版本与此包兼容,通过检查 composer.json 中的 Laravel 版本要求来确认。
使用
基本使用
要将模糊搜索功能添加到您的 Eloquent 模型中,只需使用 FuzzySearchable
特性并定义您希望进行搜索的属性
namespace App\Models; use Illuminate\Database\Eloquent\Model; use Soliyer\LaravelFuzzySearch\Traits\FuzzySearchable; class Post extends Model { use FuzzySearchable; protected $fillable = ['title', 'body', 'author', 'first_name', 'last_name']; // Specify the attributes you want to make searchable protected $searchable_attributes = ['title', 'body']; }
现在,您可以像这样在模型上执行模糊搜索
$posts = Post::fuzzySearch('Laravel')->get();
这将搜索 Post 模型的 title
和 body
属性,以搜索术语 'Laravel'
,允许部分匹配并提高搜索体验。
搜索拼接属性如果您想跨拼接属性(例如,名和姓)进行搜索,请按以下方式定义您的可搜索属性
protected $searchable_attributes = [ ['first_name', 'last_name'], // This will concatenate first_name and last_name with a space in between 'email', 'company' ];
关键点
- 可填充数组:这只是一个示例。根据您的实际模型要求替换或删除
$fillable
属性。 - 可搜索属性:根据您希望在模型中使可搜索的特定属性,调整
protected $searchable_attributes
数组。
然后,执行模糊搜索将包括这些拼接字段在搜索条件中。
高级使用
FuzzySearchable 特性是灵活的;您可以通过扩展特性或直接在模型方法中进一步自定义搜索行为。
贡献
欢迎贡献并得到完全认可。请随时分支存储库,进行更改,并在 GitHub 上提交拉取请求。
对于重大更改,请首先打开一个问题来讨论您想要进行更改的内容。请确保适当地更新测试。
安全
如果您发现任何安全相关的问题,请通过电子邮件 vafaei39@gmail.com 而不是使用公共问题跟踪器。
致谢
Soheil Vafaei
- 包作者特别感谢所有参与此包开发工作的贡献者。
许可
Laravel 模糊搜索包是开源软件,许可协议为 MIT 协议。