liangguifeng/hyperf-scout-meilisearch
Composer 安装命令:
composer require liangguifeng/hyperf-scout-meilisearch
包简介
Hyperf MeiliSearch Scout provides a driver based solution to searching your Eloquent models. Inspired By Laravel Scout.
关键字:
README 文档
README
English | 中文
[TOC]
Introduction
This extension package provides a Meilisearch integration for the Hyperf framework similar to Laravel Scout. It supports document indexing, searching, batch updates, and batch synchronization of index settings.
- Supports custom index names
- Supports batch add/update/delete documents
- Supports batch synchronization of index settings
Requirements
- PHP >= 8.1
- Hyperf >= 3.1
Installation
composer require liangguifeng/hyperf-scout-meilisearch
Configuration
Add configuration in config/autoload/scout.php:
use Hyperf\Scout\Provider\MeilisearchProvider; return [ 'default' => env('SCOUT_ENGINE', 'meilisearch'), 'chunk' => [ 'searchable' => 500, 'unsearchable' => 500, ], 'prefix' => env('SCOUT_PREFIX', ''), 'soft_delete' => false, 'concurrency' => 100, 'engine' => [ 'elasticsearch' => [ 'driver' => ElasticsearchProvider::class, 'index' => null, 'hosts' => [ env('ELASTICSEARCH_HOST', 'http://127.0.0.1:9200'), ], ], 'meilisearch' => [ 'driver' => MeilisearchProvider::class, 'host' => env('MEILISEARCH_HOST', 'http://127.0.0.1:7700'), // Your Meilisearch address 'key' => env('MEILISEARCH_KEY', null), // Your Meilisearch key 'index-settings' => [ Article::class => [ 'filterableAttributes' => ['id', 'type', 'created_at'], // Filterable fields (customizable) 'sortableAttributes' => ['id', 'sort', 'created_at'], // Sortable fields (customizable) // 'searchableAttributes' => [], // Searchable fields (all fields by default, configure if needed) ], ] ], ], ];
Add to .env
SCOUT_ENGINE=meilisearch MEILISEARCH_HOST=http://127.0.0.1:7700 MEILISEARCH_KEY=xxxxxxxxxxxxxxxxx
Add Scout configuration in Model
<?php namespace App\Model; use Hyperf\Scout\Searchable; class Article extends Model { use Searchable; /** * Get the index name for the model. * * @return string */ public function searchableAs() { return 'articles'; } /** * Get the indexable data array for the model. * * @return array */ public function toSearchableArray() { return $this->toArray(); } /** * Get the key name used to index the model. * * @return mixed */ public function getScoutKeyName() { return $this->getKeyName(); } }
Notes
The getScoutKeyName method must be added, because the default getScoutKeyName method in Hyperf is as follows:
// \Hyperf\Database\Model\Model::getQualifiedKeyName /** * Get the Scout index name used for the model. * * @return mixed */ public function getScoutKeyName() { return $this->getQualifiedKeyName(); } // \Hyperf\Database\Model\Model::getQualifiedKeyName /** * Get the fully qualified index field name. * * @return string */ public function getQualifiedKeyName() { return $this->qualifyColumn($this->getKeyName()); } // \Hyperf\Database\Model\Model::qualifyColumn /** * Qualify the given column name by the model's table. * * @param string $column * @return string */ public function qualifyColumn($column) { if (Str::contains($column, '.')) { return $column; } return $this->getTable() . '.' . $column; }
However, meilisearch does not support using a dot (.) as a primary key field. Please modify the getScoutKeyName method accordingly.
Usage
Import model data into the index
php bin/hyperf.php scout:import "App\Model\CrawleSanyaService"
Flush model data from the index
php bin/hyperf.php scout:flush "App\Model\CrawleSanyaService"
Create an index
php bin/hyperf.php meilisearch:index {name : The name of the index} {--k|key= : The name of the primary key}'
Delete an index
php bin/hyperf.php meilisearch:delete-index {name : The name of the index}
Synchronize index settings
php bin/hyperf.php meilisearch:sync-index-settings {name : The name of the index} {--k|key= : The name of the primary key}'
For detailed Scout usage
Please refer to the official Hyperf Scout documentation: https://hyperf.wiki/3.1/#/zh-cn/scout
Notes
- The primary key must be a string to avoid precision loss with large integers
- The primary key of an index can only be set once
- Do not use a dot (
.) in primary key fields when adding documents
JetBrains Supported Project
Many thanks to JetBrains for providing me with a license to work on this and other open-source projects.
License
MIT
liangguifeng/hyperf-scout-meilisearch 适用场景与选型建议
liangguifeng/hyperf-scout-meilisearch 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 17 次下载、GitHub Stars 达 2, 最近一次更新时间为 2025 年 08 月 16 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「scout」 「hyperf」 「meilisearch」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 liangguifeng/hyperf-scout-meilisearch 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 liangguifeng/hyperf-scout-meilisearch 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 liangguifeng/hyperf-scout-meilisearch 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
An async event for hyperf.
Elastic Driver for Laravel Scout
Scout support for MoonShine
php hyperf xxljob
Elastic Driver for Laravel Scout
统计信息
- 总下载量: 17
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 10
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-08-16