PHPackages                             tagsearch/php-engine - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Search &amp; Filtering](/categories/search)
4. /
5. tagsearch/php-engine

ActiveLibrary[Search &amp; Filtering](/categories/search)

tagsearch/php-engine
====================

In-memory tag search engine for e-commerce (DAWG + BM25 + hybrid ranking)

v1.0.0(3mo ago)00PHP &gt;=8.2

Since Apr 10Compare

[ Source](https://github.com/Gillesto66/php-e-cormmerce-search)[ Packagist](https://packagist.org/packages/tagsearch/php-engine)[ RSS](/packages/tagsearch-php-engine/feed)WikiDiscussions Synced 3w ago

READMEChangelogDependencies (1)Versions (2)Used By (0)

tagsearch-php — PHP Engine
==========================

[](#tagsearch-php--php-engine)

In-memory tag search engine for e-commerce. PHP 8.2+, Laravel-ready.

Installation
------------

[](#installation)

```
composer install
```

Quick Start
-----------

[](#quick-start)

```
use TagSearch\SearchEngine;
use TagSearch\SearchPreferences;
use TagSearch\ProductType;

$engine = new SearchEngine(cacheSize: 200);
$engine->loadCatalog(__DIR__ . '/../shared-assets/catalog.json');

// Recherche simple
$result = $engine->search('gaming');
// $result['results'] = [...], $result['status'] = 'CALCULÉ'

// Avec préférences
$prefs  = new SearchPreferences(preferredType: ProductType::DIGITAL, maxPrice: 50.0);
$result = $engine->search('cuisine', prefs: $prefs, fuzzy: false);
```

Intégration Laravel
-------------------

[](#intégration-laravel)

Dans `AppServiceProvider::register()` :

```
$this->app->singleton(SearchEngine::class, function () {
    $engine = new SearchEngine(cacheSize: 500);
    $engine->loadCatalog(storage_path('app/catalog.json'));
    return $engine;
});
```

Puis dans un contrôleur :

```
public function search(Request $request, SearchEngine $engine): JsonResponse {
    $results = $engine->search($request->string('q'));
    return response()->json($results);
}
```

API
---

[](#api)

### `SearchEngine::search(string $query, ?SearchPreferences $prefs, bool $fuzzy, int $maxDist, int $topK)`

[](#searchenginesearchstring-query-searchpreferences-prefs-bool-fuzzy-int-maxdist-int-topk)

Retourne `array{results: array[], status: string}` où `status` ∈ `'CALCULÉ' | 'CACHÉ' | 'MISS'`.

Tests
-----

[](#tests)

```
./vendor/bin/phpunit tests/
```

Note sur le DAWG en PHP
-----------------------

[](#note-sur-le-dawg-en-php)

PHP n'a pas d'implémentation native de DAWG. Le moteur utilise `levenshtein()` natif (C) pour la recherche floue et `str_starts_with()` pour l'autocomplétion. Pour un corpus &gt; 100k tags, envisager une extension C ou un service dédié (Meilisearch).

###  Health Score

34

—

LowBetter than 75% of packages

Maintenance80

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

105d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/149837314?v=4)[gillesto66](/maintainers/gillesto66)[@Gillesto66](https://github.com/Gillesto66)

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/tagsearch-php-engine/health.svg)

```
[![Health](https://phpackages.com/badges/tagsearch-php-engine/health.svg)](https://phpackages.com/packages/tagsearch-php-engine)
```

###  Alternatives

[awesome-nova/dependent-filter

Dependent filters for Laravel Nova

26193.1k](/packages/awesome-nova-dependent-filter)[algolia/php-dom-parser

A simple tool to turn DOM into Algolia search friendly record objects.

181.8k](/packages/algolia-php-dom-parser)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
