schranz-search/symfony-bundle

An integration of schranz-search search abstraction via a Bundle into the Symfony Framework.

Fund package maintenance!
alexander-schranz
paypal.me/L91

Installs: 2 898

Dependents: 0

Suggesters: 0

Security: 0

Stars: 7

Watchers: 3

Forks: 1

Type:symfony-bundle

0.4.0 2024-03-18 21:03 UTC

This package is auto-updated.

Last update: 2024-03-29 09:11:33 UTC


README

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

Schranz Search SEAL
Symfony Integration



Integration of the Schranz Search — Search Engine Abstraction Layer (SEAL) into Symfony.

Note: This is part of the schranz-search/schranz-search project create issues in the main repository.

Note: This project is heavily under development and any feedback is greatly appreciated.

Installation

Use composer for install the package:

composer require schranz-search/symfony-bundle

Also install one of the listed adapters.

List of adapters

The following adapters are available:

Additional Wrapper adapters:

Creating your own adapter? Add the seal-php-adapter Topic to your Github Repository.

Configuration

The following code shows how to configure the package:

# config/packages/schranz_search.yaml

schranz_search:
    schemas:
        app:
            dir: '%kernel.project_dir%/config/schemas'
            # engine: 'default'
    engines:
        default:
            adapter: '%env(ENGINE_URL)%'

A more complex configuration can be here found:

# config/packages/schranz_search.yaml

schranz_search:
    schemas:
        app:
            dir: '%kernel.project_dir%/config/schemas/app'
        other:
            dir: '%kernel.project_dir%/config/schemas/other'
            engine: algolia
    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'
    index_name_prefix: ''

Usage

The default engine is available as Engine:

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

A specific engine is available under the config key suffix with Engine:

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

Multiple engines can be accessed via the EngineRegistry:

class Some {
    private Engine $engine;

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

How to create a Schema file and use your Engine can be found SEAL Documentation.

Commands

The bundle provides the following commands:

Create configured indexes

bin/console schranz:search:index-create --help

Drop configured indexes

bin/console schranz:search:index-drop --help

Authors