承接 liangguifeng/hyperf-scout-meilisearch 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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 我们能提供哪些服务?
定制开发 / 二次开发

基于 liangguifeng/hyperf-scout-meilisearch 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 17
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 10
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-08-16