micka-17 / typesense-bundle
Un bundle Symfony pour intégrer Typesense.
Installs: 21
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Language:CSS
Type:symfony-bundle
Requires
- php: >=8.4
- doctrine/doctrine-bundle: ^2.14 || ^3.0
- doctrine/orm: ^3.0
- symfony/config: ^7.0
- symfony/console: ^7.0
- symfony/dependency-injection: ^7.0
- symfony/framework-bundle: ^7.0
- symfony/http-client: ^7.3
- symfony/webpack-encore-bundle: ^2.2
- typesense/typesense-php: ^5.1
Requires (Dev)
- phpspec/prophecy-phpunit: ^2.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.0
- symfony/phpunit-bridge: ^7.0
This package is not auto-updated.
Last update: 2025-07-16 10:57:40 UTC
README
Ce bundle facilite l'intégration de Typesense dans vos applications Symfony. Il permet d'indexer automatiquement vos entités Doctrine dans Typesense et de gérer les opérations de recherche.
Installation
composer require micka-17/typesense-bundle
Configuration
typesense: api_key: '%env(TYPENSE_API_KEY)%' nodes: - host: '%env(TYPENSE_HOST)%' port: '%env(TYPENSE_PORT)%' protocol: '%env(TYPENSE_PROTOCOL)%' indexable_entities: - App\Entity\Product - App\Entity\Category synonyms: - { id: 'size-synonyms', synonyms: ['large', 'big', 'huge'] } - { id: 'color-synonyms', root: 'primary_color', synonyms: ['red', 'blue', 'green'] } auto_update: true
Utilisation
Indexation des Entités
#[TypesenseIndexable(collection: 'products')] #[TypesenseSynonym(id: 'product-synonyms', synonyms: ['item', 'good', 'merchandise'])] class Product { #[TypesenseField( name: 'name', type: 'string', facet: true, sort: true )] private string $name; }
Recherche
Le service FinderService
vous permet d'effectuer des recherches simples, paginées ou sur plusieurs collections.
use Micka17\TypesenseBundle\Service\FinderService; class YourService { public function __construct(private FinderService $finderService) {} public function searchProducts(string $query) { return $this->finderService->search('products', ['q' => $query]); } public function searchProductsPaginated(string $query, int $page = 1) { return $this->finderService->searchAndPaginate('products', ['q' => $query], $page, 15); } public function searchMulti(string $query) { $searchRequests = [ 'searches' => [ ['collection' => 'products', 'q' => $query], ['collection' => 'categories', 'q' => $query], ] ]; return $this->finderService->multiSearch($searchRequests); } }
Commandes
# Créer une collection php bin/console micka17:typesense:manage create "App\Entity\Product" # Recréer une collection php bin/console micka17:typesense:manage recreate "App\Entity\Product" # Re-indexer une collection php bin/console micka17:typesense:manage reindex "App\Entity\Product" # Supprimer une collection php bin/console micka17:typesense:manage delete "App\Entity\Product" # Gérer les synonymes php bin/console micka17:typesense:synonyms <action> <synonym-id> <synonyms> --collection=<collection> # Appliquer les synonymes depuis la configuration et les attributs php bin/console micka17:typesense:synonyms:apply
Documentation Complète
Pour plus de détails sur la configuration et l'utilisation, consultez la documentation complète.
Contribuer
Les contributions sont les bienvenues ! N'hésitez pas à créer des issues ou des pull requests.
Support
Pour toute question ou problème, ouvrez une issue sur le repository GitHub du projet.
License
Ce bundle est distribué sous la licence MIT.