OEM and platforms

The engine behind Searchmaker, as a library you can build on.

Searchmaker Engine is a plain PHP library with a standalone runtime. License it to put fast catalog search, filters and feeds inside your own plugin, platform or hosting product, under your brand.

No public price list: every OEM arrangement is scoped with you.

// build, from cron / admin / CLI
$catalog = new \Searchmaker\Engine\Catalog($dataDir, 'en');
$catalog->rebuild($products, ['currency' => 'EUR']);

// query in-process, input is whitelisted
$result = $catalog->query($_GET);

// or expose the standalone endpoint
[$status, $body] = (new \Searchmaker\Runtime\Runtime(
    $dataDir, ['en'], 'en', ['catalog', 'autocomplete']
))->handle($_GET);

Who it is for

Teams that sell search, not teams that want to build an index.

Plugin and theme vendors

Keep your UI, branding and customers. Replace expensive catalog reads with a local index instead of building one.

Hosting and platform providers

Offer fast catalog search and filters to every WooCommerce store on your platform without running a search cluster.

ERP, PIM and commerce software

Index the catalog you already own and serve storefront search from your own endpoint, with price and stock patched live.

Other PHP stacks

The Engine has no WordPress dependency. Anything that can yield normalized products can be indexed and queried.

Division of labour

You own the product. The Engine owns the index.

A clean seam: your UI and source adapter on one side, a tested index, query engine and feed writer on the other.

YouThe Engine
Frontend UX, theme and page-builder compatibilityIndex format, build, validation, atomic activation and rollback
Settings, branding and licensing of your own productQuery parsing and execution: search, facets, price, sort, paging
A source adapter that turns your data into normalized productsRelevance primitives: exact SKU, prefix, typo and compound words, accent folding
Change tracking and rebuild schedulingPatches for price and stock, delta layers for edits, bounded-memory iteration
Request routing for your endpointA framework-free runtime handler with limits and a mode whitelist

What you get

The hard parts, already built and measured.

Immutable, validated indexes

Builds are written aside, checksummed and switched in atomically. Rollback is built in; the active index is never modified in place.

Incremental maintenance

Price and stock patch in tens of milliseconds, edits become small delta layers. Rebuilds are for the cases that need them.

Bounded memory

Fixed-size reads, streaming builders and a streaming Merchant feed writer. No product arrays on the query path.

Language layer

Accent folding, synonym packs compiled per catalog, and privacy-safe learning from zero-result searches through a separate collector.

Safe by construction

A read-only public runtime with strict limits, no SQL, no eval, no user-controlled paths. Writes happen only in admin and builders.

Stable contract

Within a major version the Catalog API, product shape and query keys stay backwards compatible. The binary index is versioned and rebuilt, never migrated in place.

measured*

0.39ms

Typical filtered query

Category, brand, facets and stock on 100,000 products.

measured*

178ms

Patch 2,000 price changes

Writes 0.9 MB instead of a 41 MB rebuild.

measured*

6.4s

Merchant feed, 240,000 variation items

Streaming writer, bounded memory.

verified

504checks

Automated tests

Engine, plugin and runtime, plus live WordPress runs.

* Development measurements on a synthetic catalog; see benchmarks and the technical paper.

Requirements

Runs wherever PHP runs.

  • PHP 8.1+ with mbstring and json (intl improves accent folding).
  • No database, Redis, SQLite, WASM, shell access or daemon required.
  • A writable data directory for builds and read access for the endpoint.
  • Namespacing: rename the namespace when vendoring so two plugins can coexist; the first-party plugin is the reference integration.

How we work

From first call to first integration.

  1. Tell us what you are buildingYour product, your catalog sizes, how many sites or shops will run it, and the timeline.
  2. We scope the integrationNormalized product contract, namespacing, packaging, support and update expectations.
  3. You integrate against the referenceThe first-party WooCommerce plugin is built on the same public API and is the working example.
  4. We agree the commercial modelAnnual OEM license, a base plus per-active-site royalty, or a negotiated distribution license.

Let us talk about what you are building.

Typical models are an annual OEM license, a base plus per-active-site royalty, or a negotiated distribution license. No public price list.