Open-source tools for debugging and improving Spryker search relevance. Understand Elasticsearch and OpenSearch scores, normalize business signals, and build explainable product ranking.
翻譯準備中
外掛GitHub @andrebarthelmeshellmuth上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
Bundle package for the Spryker search toolkit: search-debug, search-ranking, search-ranking-optimizer, search-feedback, search-variant-facets, and search-index-alias at compatible versions.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
This is a type: metapackage with no PHP source of its own, so it skips the PHP-version and
PHPStan badges every bundled package carries — there's no code for either to describe here. The
CI badge instead reflects the one check that does apply: composer validate --strict on this
package's own composer.json.檢視完整 README ↗This is a type: metapackage with no PHP source of its own, so it skips the PHP-version and
PHPStan badges every bundled package carries — there's no code for either to describe here. The
CI badge instead reflects the one check that does apply: composer validate --strict on this
package's own composer.json.
A single composer require for the whole Spryker search toolkit. This package carries no code of
its own — it exists purely to pull in search-debug,
search-ranking,
search-ranking-optimizer,
search-feedback,
search-variant-facets,
search-index-alias, and
search-analyzer-config
at version floors that are known to work with each other.
Each member package stays independently installable and focused on one concern (explainability, ranking mechanism, tuning, cross-facet indexing, no-downtime index management, analyzer configuration). search-index-alias, search-variant-facets, and search-analyzer-config are search tooling that isn't about relevance scoring — a no-downtime settings/mapping change via alias swap, correct cross-facet indexing, and Zed-editable analyzer settings (decompound/synonyms/stopwords), respectively — landing as sibling packages under this same toolkit rather than bolted onto the relevance packages above.
Part of the Search Relevance project — explore the interactive ranking-formula walkthrough there.
Community extensions. search-debug and search-feedback are maintained by the community in Spryker's community GitHub org; this bundle and the other members are still hosted on the maintainer's own GitHub account while they move over. None of them are part of the commercial Spryker product or covered by Spryker's commercial support.
One screenshot per bundled package, and the top thing (or two, or three) it actually does for you.
function_score query alongside text
relevance, with a relevance-weight knob to shift the balance between the two.| Package | Role |
|---|---|
| search-debug | Per-product Elasticsearch/OpenSearch score and token overlay — explains why a result ranked where it did. |
| search-ranking | The ranking mechanism: business-signal metrics, normalization, and function_score ranking. |
| search-ranking-optimizer | The tuning layer on top: calibration, relevance judgments, rank evaluation, and weight optimization. |
| search-feedback | SRP feedback ticketing: lets an authorized storefront admin file a ticket about a set of search results. |
| search-variant-facets | Fixes Spryker core's OR-across-concretes facet indexing: cross-facet selections match only concretes that actually carry the combination. |
| search-index-alias | Zed blue/green search-index management via aliases: rebuild and flip an index with no storefront downtime. |
| search-analyzer-config | Zed-editable per-store-index analyzer configuration (decompound words, synonyms, stopwords, stemmer language), materialized via a search-index-alias rebuild. |
Stable. Every member package has reached a stable release. This bundle declares the oldest version of each that it has been verified against:
| Package | Minimum verified |
|---|---|
| search-debug | ^1.3.4 |
| search-ranking | ^2.3.5 |
| search-ranking-optimizer | ^2.0.0 |
| search-feedback | ^1.4.4 |
| search-variant-facets | ^1.0.1 |
| search-index-alias | ^2.0.0 |
| search-analyzer-config | ^1.0.0 |
Read these as floors, not pins. They are caret constraints, so Composer resolves each member to the
newest release sharing that major — installing today gives you a newer set than the versions named
above, and that resolved combination is whatever the member packages' own semver guarantees make it,
not a combination this bundle has separately tested. That is the intended trade-off: pinning exact
versions here would block members from shipping their own patch releases to you. What this bundle
guarantees is the floor — that nothing older than the table above is ever selected, and that the
majors listed are mutually compatible. If you need a byte-exact reproducible set, commit your
composer.lock; that is the tool for it, and it is the reason this bundle does not try to be one.
One caveat is unchanged, and it is about distribution, not maturity: the packages are moving into
Spryker's community GitHub org (github.com/spryker-community) and onto Packagist one at a time.
search-debug and search-feedback are already there and install from Packagist; the other five members and
this bundle are not yet, so installation still needs the manual VCS repository step below for them.
search-ranking-optimizer also transitively requires
andrebarthelmeshellmuth/blackbox-optimizer,
which is likewise not yet on Packagist — see the note under Installation.
Once every member package (and blackbox-optimizer) is published to Packagist, installing the whole toolkit will be:
composer require spryker-community/search-toolkit
Today, add a VCS repository entry to your own project's composer.json for every package that is
not yet on Packagist: the five members and this bundle below, and blackbox-optimizer, even though
search-ranking-optimizer's own composer.json already declares a repository for it — Composer
only reads repositories from the root project, never from a dependency's own composer.json,
so every non-Packagist package anywhere in the graph has to be re-declared by whoever sits at the
root. search-debug and search-feedback need no entry: Composer resolves them from Packagist. (This
mirrors what this project's own demoshop does — see its composer.json.)
{
"repositories": [
{ "type": "vcs", "url": "https://github.com/andrebarthelmeshellmuth/spryker-search-ranking" },
{ "type": "vcs", "url": "https://github.com/andrebarthelmeshellmuth/spryker-search-ranking-optimizer" },
{ "type": "vcs", "url": "https://github.com/andrebarthelmeshellmuth/spryker-search-variant-facets" },
{ "type": "vcs", "url": "https://github.com/andrebarthelmeshellmuth/spryker-search-index-alias" },
{ "type": "vcs", "url": "https://github.com/andrebarthelmeshellmuth/spryker-search-analyzer-config" },
{ "type": "vcs", "url": "https://github.com/andrebarthelmeshellmuth/spryker-search-toolkit" },
{ "type": "vcs", "url": "https://github.com/andrebarthelmeshellmuth/blackbox-optimizer" }
],
"require": {
"spryker-community/search-toolkit": "^1.3.0"
}
}
then composer update.
This package has no code, so its version tracks compatible combinations, not behavior. Its
require floors are bumped whenever a member package ships a new major or minor release that this
bundle has been verified against — and, as a patch bump, whenever a new member package joins the
bundle at all (adding search-feedback was one such patch bump, even though nothing existing
changed).
1.0.0 marks the point where every member package is itself at a stable release, rather than any
change in what this bundle does. Note that two of the floors it raised were not merely stale but
wrong: the previous ^1.3.0 for search-ranking excluded its entire 2.x line, and ^0.9.1 for
search-ranking-optimizer excluded its 1.0.0 — so pre-1.0.0 tags of this bundle resolve to a set that
no longer reflects the packages' current releases.
1.2.0 adds search-variant-facets and search-index-alias as new bundled members and raises
search-ranking-optimizer's floor to its 2.0.0 line, alongside patch-level floor bumps for
search-debug, search-ranking, and search-feedback.
1.3.0 adds search-analyzer-config as a new bundled member and raises search-index-alias's
floor to its 2.0.0 line (a real breaking change in that package — the default rebuild mode
flipped to fromSchema=true — but this bundle's own contract doesn't change, hence a minor bump
here, not a major one), alongside patch-level floor bumps for search-debug, search-ranking,
search-feedback, and search-variant-facets. Use ^1.3.0.
MIT, see LICENSE.