schranz-search/laravel-package

将 schranz-search 搜索抽象集成到 Laravel 框架中。

0.4.0 2024-03-18 21:03 UTC

This package is auto-updated.

Last update: 2024-09-18 16:13:26 UTC


README

Schranz Search Logo with a Seal on it with a magnifying glass

Schranz Search SEAL
Laravel 集成



Schranz Search — 搜索引擎抽象层 (SEAL) 的 Laravel 集成。

注意:这是 schranz-search/schranz-search 项目的一部分,请在 主仓库 中创建问题。

注意:该项目处于高度开发中,任何反馈都将受到高度重视。

安装

使用 composer 安装包

composer require schranz-search/laravel-package

同时安装列表中的其中一个适配器。

适配器列表

以下适配器可用

额外的包装适配器

如果您正在创建自己的适配器,请将 seal-php-adapter 主题添加到您的 Github 仓库中。

用法

以下代码展示了如何配置该包

<?php

// config/schranz_search.php

return [
    /*
    |--------------------------------------------------------------------------
    | Schema configs
    |--------------------------------------------------------------------------
    |
    | Define different directories for the schema loader.
    */

    'schemas' => [
        'app' => [
            'dir' => resource_path('schemas'),
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | engines
    |--------------------------------------------------------------------------
    |
    | Directory where the latte templates can be found.
    */

    'engines' => [
        'default' => [
            'adapter' => env(
                'ENGINE_URL',
                'meilisearch://127.0.0.1:7700',
            ),
        ],
    ],
];

更复杂的配置可以在这里找到

<?php

// config/schranz_search.php

return [
    /*
    |--------------------------------------------------------------------------
    | Schema configs
    |--------------------------------------------------------------------------
    |
    | Define different directories for the schema loader.
    */

    'schemas' => [
        'app' => [
            'dir' => resource_path('schemas') . '/app',
            'engine' => 'meilisearch',
        ],
        'other' => [
            'dir' => resource_path('schemas') . '/other',
            'engine' => 'algolia',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | engines
    |--------------------------------------------------------------------------
    |
    | Directory where the latte templates can be found.
    */

    'engines' => [
        'algolia' => [
            'adapter' => 'algolia://' . env('ALGOLIA_APPLICATION_ID') . ':' . env('ALGOLIA_ADMIN_API_KEY'),
        ],
        'elasticsearch' => [
            'adapter' => 'elasticsearch://127.0.0.1:9200',
        ],
        'meilisearch' => [
            'adapter' => 'meilisearch://127.0.0.1:7700',
        ],
        'memory' => [
            'adapter' => 'memory://',
        ],
        'opensearch' => [
            'adapter' => 'opensearch://127.0.0.1:9200',
        ],
        'redisearch' => [
            'adapter' => 'redis://supersecure@127.0.0.1:6379',
        ],
        'solr' => [
            'adapter' => 'solr://127.0.0.1:8983',
        ],
        'typesense' => [
            'adapter' => 'typesense://S3CR3T@127.0.0.1:8108',
        ],
        
        // ...
        'multi' => [
            'adapter' => 'multi://elasticsearch?adapters[]=opensearch',
        ],
        'read-write' => [
            'adapter' => 'read-write://elasticsearch?write=multi',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Schema prefix
    |--------------------------------------------------------------------------
    |
    | Define the prefix used for the index names to avoid conflicts.
    */

    'index_name_prefix' => '',
];

默认引擎作为 Engine 提供

class Some {
    public function __construct(
        private readonly \Schranz\Search\SEAL\EngineInterface $engine,
    ) {
    }
}

可以通过 EngineRegistry 访问多个引擎

class Some {
    private Engine $engine;

    public function __construct(
        private readonly \Schranz\Search\SEAL\EngineRegistry $engineRegistry,
    ) {
        $this->engine = $this->engineRegistry->get('algolia');
    }
}

除了构造函数注入之外,Laravel 集成还提供了两个 Facades 用于上述服务

  • Schranz\Search\Integration\Laravel\Facade\Engine
  • Schranz\Search\Integration\Laravel\Facade\EngineRegistry

有关如何创建 Schema 文件和使用您的 Engine 的信息,请参阅 SEAL 文档

命令

该包提供以下命令

创建配置索引

php artisan schranz:search:index-create --help

删除配置索引

php artisan schranz:search:index-drop --help

作者