saber13812002 / laravel-fulltext
Laravel 的全文索引和搜索
Requires
- php: ^7.4|^8.0
- illuminate/console: ^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/contracts: ^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/database: ^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- mockery/mockery: ^1.5
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-30 01:41:59 UTC
README
此包为模型创建 MySQL 全文索引,并允许您搜索这些索引。
安装
- 使用 composer 安装
composer require swisnl/laravel-fulltext
- 发布迁移和配置
php artisan vendor:publish --tag=laravel-fulltext
- 迁移数据库
php artisan migrate
用法
该包使用模型观察器在模型更改时更新索引。如果您想运行完整索引,可以使用控制台命令。
模型
将 Indexable
特性添加到您希望索引的模型中,并定义您希望索引的列作为标题和内容。
示例
class Country extends Model { use \Saber13812002\Laravel\Fulltext\Indexable; protected $indexContentColumns = ['biographies.name', 'political_situation', 'elections']; protected $indexTitleColumns = ['name', 'governmental_type']; }
您可以使用点表示法查询模型的关系,例如 biographies.name
。
搜索
您可以使用 Search 类进行搜索。
$search = new \Saber13812002\Laravel\Fulltext\Search(); $search->run('europe');
这将返回一个包含在多态关系 indexable
中的模型的 \Saber13812002\Laravel\Fulltext\IndexedRecord
集合。
如果您只想搜索特定的模型,可以使用 $search->runForClass('europe', Country::class);
。这将仅返回该模型的结果。
Artisan 命令
laravel-fulltext:all
为特定类索引所有模型。
php artisan laravel-fulltext:all \\App\\Models\\Country
laravel-fulltext:one
为特定类索引单个模型。
php artisan laravel-fulltext:one \\App\\Models\\Country 4
选项
db_connection
选择要使用的数据库连接,默认为默认数据库连接。当您不使用默认数据库连接时,必须在运行迁移之前设置此选项才能正确工作。
weight.title weight.content
在结果中对 title
或 content
进行加权。搜索结果得分将乘以此配置中的权重。
enable_wildcards
启用单词后面的通配符。因此,当搜索例如 car
时,它也会匹配 carbon
。
exclude_feature_enabled
此功能排除某些行返回。当您在模型中有一个标志确定此记录是否必须出现在搜索查询中时,启用此功能。默认情况下,此功能是禁用的。
exclude_records_column_name
该属性的列名(充当标志)。这必须与表中的列名完全匹配。
使用此功能的一个示例
如果您有一个博客,并且已经将此搜索功能添加到您的博客中,以便搜索博客文章。有时您不希望在搜索结果中显示某些文章,例如当文章尚未发布时。此功能可以帮助您实现这一点。
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
测试
composer test
贡献
请参阅 CONTRIBUTING 和 CODE_OF_CONDUCT 了解详细信息。
安全性
如果您发现任何与安全相关的问题,请通过电子邮件 security@swis.nl 而不是使用问题跟踪器。
致谢
许可协议
MIT 许可协议 (MIT)。请参阅 许可文件 了解更多信息。
本包是Treeware。如果您在生产环境中使用它,我们希望您为我们买一棵树以感谢我们的工作。通过为Treeware森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。
SWIS ❤️ 开源
SWIS 是一家来自荷兰莱顿的网页代理机构。我们热爱与开源软件合作。