ppl / module-search-intelligence-core
Shared Search Intelligence engine, indexing, Magento integration and response contracts for the Luma and Hyva storefront adapters.
PPL Search Intelligence Core for Magento 2
PPL Search Intelligence Core is the single shared backend for the Luma and Hyva storefront adapters. It owns query understanding, product truth, schema, configuration, admin UI, routes, indexing, ranking, redirects, cron, queues and the stable storefront response contract.
What It Adds
- Canonical search-page and overlay product truth
- Magento full and incremental indexing, MySQL/OpenSearch routing and optional Redis cache data
- Query rules, synonyms, corrections, redirects, recovery, ranking, merchandising and diagnostics
- One admin/configuration/schema/cron/queue implementation shared by both storefront adapters
Requirements And Dependencies
- PHP >=8.1 and Magento Open Source or Adobe Commerce 2.4.9
Ppl_Huband the Magento modules declared incomposer.json- Exactly one storefront adapter:
Ppl_SearchIntelligencefor Luma orPpl_SearchIntelligenceHVfor Hyva - Do not enable with
Ppl_ScoredSearch; both modules own the same search surface
Installation
Install one storefront adapter. Composer installs this Core package transitively.
# Luma
composer require ppl/module-hub ppl/module-search-intelligence
bin/magento module:enable Ppl_Hub Ppl_SearchIntelligenceCore Ppl_SearchIntelligence
# Or Hyva
composer require ppl/module-hub ppl/module-search-intelligence-hv
bin/magento module:enable Ppl_Hub Ppl_SearchIntelligenceCore Ppl_SearchIntelligenceHV
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:clean
For manual app/code installation, copy Ppl/Hub, Ppl/SearchIntelligenceCore and exactly one adapter into app/code/Ppl, then enable the same three modules in that order.
First Use
- Disable
Ppl_ScoredSearchand ensure only one Search Intelligence adapter is active. - Run
ppl:search-intelligence:signals:rebuildandppl:search-intelligence:index:rebuildbefore enabling storefront suggestions or search-page ownership. - Keep Magento cron running. Async rebuilding additionally requires AMQP/RabbitMQ; without it rebuilds remain synchronous.
- Pair the active adapter with the corresponding Discovery Filters frontend when overlay facets are required.
Admin entry: PPL Hub > PPL Search Intelligence.
Integrations And Boundaries
- Cooperates with Discovery Filters only through PPL Hub capability contracts and the neutral filter integration event.
- Luma and Hyva call the same application service and receive the same versioned payload; only templates, JavaScript, CSS and adapter ViewModels differ.
- Queue XML is transport-neutral so setup and synchronous operation work without RabbitMQ. Heavy async indexing is enabled only after the AMQP queue is reachable and provisioned.
Localization
The package includes translation CSV files for 12 locales: de_DE, en_US, es_ES, fr_FR, it_IT, ja_JP, nl_NL, pl_PL, pt_BR, ru_RU, tr_TR, zh_CN.
Customer Documentation
Customer-facing User Guides and Marketplace Long Descriptions are maintained outside the Magento module package in the repository-level docs/user_guides and docs/long_descriptions folders. The module package itself intentionally keeps only this technical README plus developer-relevant files.
Support
Support contact: [email protected]. Include the module version, Magento version, enabled PPL companion modules, and the relevant admin or storefront screenshot when reporting an issue.
Changelog
1.3.0
- Extracted the single shared backend used by the Luma and Hyva storefront adapters; schema, routes,
configuration, admin UI, controllers, cron, queues, indexing, ranking and response contracts now
have one owner. - Added live product-truth validation, current customer-group pricing/tax formatting, MSI salability,
deterministic recovery behavior and version-aware candidate totals. - Added Magento indexer/mview product updates for catalog, price, inventory, category, rule and review
changes; removed the unused reserved index-queue table and exposed the working indexer setting. - Made queue XML transport-neutral while retaining the explicit AMQP capability gate for heavy async
rebuilds, and bounded result-set cleanup with a non-blocking process lock. - Added the shared overlay application service and stable versioned AJAX/profiler payload contract.
- Added Magento Open Source and Adobe Commerce 2.4.9 compatibility and PPL Hub 1.3 integration.
1.2.0
- Initial release.
- Added query understanding, MySQL candidate provider, explainable ranking and product signal rebuilds.
- Added admin Test Lab, hub-only configuration sections, CLI commands, cron jobs and core schema tables.
- Added optional configurable storefront suggestions, Discovery Filters integration and read-only internal provider status.
- Search result pages use Search Intelligence as the canonical product basis for product list rendering, Discovery Filters, toolbar totals, pagination and sorting.
- Added overlay fast-path payload mapping, action payload slimming, optional payload pruning and profiler payload parity.
- Added behavior-aware ranking gates that consume aggregated behavior signals; storefront behavior collection, impression tracking and purchase/return attribution are owned by the optional Ppl_Tracking module.
- Added Smart Discovery P0 payload support as an additive, read-only overlay field.
- Added Test Lab timing help and request-path details while keeping winner/loser row backgrounds neutral and limiting colored highlights to metric cells.
- Routed Search Intelligence <-> Discovery Filters cooperation through neutral Ppl_Hub capabilities: SI exposes the canonical search product set via the Hub SearchPageProductSetProviderInterface bridge and reads facet/filter data via the Hub FilterIndexReaderInterface, instead of reading a sibling module's tables.
- Declared an explicit magento/module-cron dependency and Magento_Cron load-order sequence so the bundled cron jobs (index bootstrap/rebuild, signal rebuild, knowledge-pack compile, result-set purge, async dispatch/advance) load deterministically.
- Normalized every ranking component to a common [0,1] scale before weighting, retuned the shipped default weights, and added a data patch that calibrates stored per-scope weight overrides onto the new scale so existing merchant tuning is preserved.
- Added optional async index rebuilds that fan a catalog rebuild out to the Magento message queue (one message per product batch, version-swapped only when complete) with a transactional outbox, per-minute dispatch/advance cron jobs and a broker-availability probe; falls back to the synchronous rebuild when no broker is configured.
- Extended product signal scoring with freshness (recency), return-rate, click-through and search-conversion terms and lifted the signal scale cap so strong products no longer saturate.
- Added search smoke/profile/recall diagnostic and corpus/benchmark/seed CLI commands that exercise the live SI + Discovery Filters result path through the Hub filter-index reader.
Requires 37
| Package | Constraint |
|---|---|
| ext-ctype | * |
| ext-curl | * |
| ext-hash | * |
| ext-mbstring | * |
| guzzlehttp/guzzle | ^7.5 |
| magento/framework | >=103.0.7 <104.0.0 |
| magento/module-advanced-search | >=100.4.0 <101.0.0 |
| magento/module-backend | >=102.0.0 <103.0.0 |
| magento/module-catalog | >=104.0.0 <105.0.0 |
| magento/module-catalog-inventory | >=100.4.0 <101.0.0 |
| magento/module-catalog-search | >=102.0.0 <103.0.0 |
| magento/module-checkout | >=100.4.0 <101.0.0 |
| magento/module-config | >=101.2.0 <102.0.0 |
| magento/module-configurable-product | >=100.4.0 <101.0.0 |
| magento/module-cron | >=100.4.0 <101.0.0 |
| magento/module-customer | >=103.0.0 <104.0.0 |
| magento/module-eav | >=102.1.0 <103.0.0 |
| magento/module-inventory-api | >=1.2.0 <2.0.0 |
| magento/module-inventory-reservations | >=1.2.0 <2.0.0 |
| magento/module-inventory-reservations-api | >=1.2.0 <2.0.0 |
| magento/module-inventory-sales | >=1.2.0 <2.0.0 |
| magento/module-inventory-sales-api | >=1.2.0 <2.0.0 |
| magento/module-message-queue | >=100.4.0 <101.0.0 |
| magento/module-review | >=100.4.0 <101.0.0 |
| magento/module-sales | >=103.0.0 <104.0.0 |
| magento/module-search | >=101.1.0 <102.0.0 |
| magento/module-store | >=101.1.0 <102.0.0 |
| magento/module-tax | >=100.4.0 <101.0.0 |
| magento/module-ui | >=101.2.0 <102.0.0 |
| magento/module-url-rewrite | >=102.0.0 <103.0.0 |
| magento/module-wishlist | >=101.2.0 <102.0.0 |
| php | >=8.1 |
| php-amqplib/php-amqplib | ^3.0 |
| ppl/module-hub | ^1.3 |
| psr/log | ^1.0 || ^2.0 || ^3.0 |
| symfony/console | ^6.4 || ^7.0 |
| symfony/process | ^6.4 || ^7.0 |
Conflicts 1
| Package | Constraint |
|---|---|
| ppl/scored_search | ^1.3 |
Compatibility
Each Magento release line is installed on its supported PHP versions, then the module is built (DI compilation + static-content deploy) and its unit and integration suites are run. The matrix shows the lines and PHP versions the module is confirmed to install and run on. Code-quality results further down (phpstan, phpcs, …) are reported separately and never affect compatibility.
Code Quality
Advisory checks against the module's source. Static analysis runs once across the whole module; PHPStan re-runs per Magento + PHP version because resolvable symbols differ between releases. These NEVER affect the Compatibility badge. A phpcs finding can't make a module incompatible.
Static analysis
Coding standards (phpcs), mess detection (phpmd), copy-pasted code (cpd), PHP cross-version compatibility, composer.json validity. Each runs once for the whole module.
| Tool | Status | Findings | Summary |
|---|---|---|---|
| PHPCS | Warning | 5 | 5 warnings (ruleset: Magento2) |
| PHPMD | Warning | 65 | 65 rule violations (UnusedFormalParameter:33, MissingImport:16, ExcessiveClassComplexity:6, UnusedPrivateMethod:4, TooManyMethods:2) |
| Cpd | Warning | 18 | 18 duplicated chunks spanning 487 total lines (min-lines=5, min-tokens=70) |
| Composer validate | Info | 1 | valid; 1 advisory note (composer validate --strict) |
PHPStan
Type-checks the module's PHP against a real Magento install at the configured gate level. Re-runs per Magento and PHP version because resolvable symbols differ between releases.
Tests
Unit and integration suites, run for each applicable Magento and PHP version. A test failure speaks to the module's behaviour, not its compatibility with a Magento line, so it is reported here separately and never reddens the compatibility matrix.
Unit tests
Integration tests
| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | N/A | N/A | ||
| 2.4.8 | N/A | N/A | ||
| 2.4.9 | N/A | N/A |
Security
Security checks run directly against the module: an audit of its declared dependencies for known vulnerabilities (composer audit) and a scan of its source for malware and web-shell signatures. Each runs once. A malware detection fails the version outright.
More from Pawel Pliousnin Digital Solutions
View vendorStandalone full-page-cache warmer for Magento 2: crawls category pages and configurable first product-list actions, including filters, sorting, page size, view mode and pagination, so shoppers reach warm built-in FPC or Varnish entries from the first clicks. Supports native Magento query-parameter navigation and PPL Discovery Filters without requiring another PPL module.
Foundation and anchor infrastructure for modular PPL admin reports; individual PPL report modules provide the actual reports.
Admin action board for Magento 2 that turns shop and PPL report signals into severity-scored task cards.
Standalone PPL Tracking & Privacy HV storefront package for Magento 2, compatible with Hyvä-based storefronts, with consent-aware behavioural tracking and data-subject tooling.
Turn an existing module into recurring revenue.
If you already maintain a Magento 2 module on GitHub or GitLab, listing it on Packagento takes about five minutes. We mirror your tags, handle distribution signing, and route paid licenses through Stripe Connect, so you can keep shipping the way you already do.