solier/laravel-fuzzy-search

一个为 Eloquent 模型提供模糊搜索特性的 Laravel 扩展包,以便轻松实现具有拼接属性支持的搜索功能。

1.0.0 2024-03-05 02:53 UTC

This package is auto-updated.

Last update: 2024-09-13 19:10:16 UTC


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 模型的 titlebody 属性,以搜索术语 '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 协议。