ibexa/search
Ibexa Search provides the search engine integration layer for Ibexa DXP and Ibexa Open Source, powering content queries and indexing. Commercial use requires an Ibexa DXP subscription; GPLv2 otherwise.
What this package actually is. ibexa/search is not a general-purpose search library. It is the search-and-faceted-navigation subsystem of Ibexa DXP (formerly eZ Platform), published as a read-only split of the vendor monorepo. It supplies the global search UI, search suggestions/autocomplete, facets, sorting, spellchecking, and the mapping layer between Ibexa's SearchService criteria and paged result DTOs. The actual indexing and query execution live in the underlying search engine (Solr/Elasticsearch) and in ibexa/core; this package is the orchestration and presentation layer above it.
Architecture fit. Fit is high only inside an Ibexa DXP installation and effectively zero outside it. The package is bound to Ibexa contracts (RepositoryConfigurationProviderInterface, PagerSearchDataMapper), Ibexa's content model, and the Ibexa admin/back-office UI. It assumes the Symfony full-stack runtime (the 5.0 line requires Symfony 7.x and PHP 8.3+). It is not a drop-in for a Laravel application, and nothing in the repository suggests Laravel service-provider integration, framework-agnostic adapters, or a standalone facade.
Integration feasibility. Adoption is transitive, not direct. Zero Packagist dependents and 4 GitHub stars confirm the package is consumed almost exclusively through the ibexa/* metapackages, never as an independently versioned dependency. Realistic integration paths are therefore: (a) you are deploying Ibexa DXP and this comes along, or (b) you are not, and this package is out of scope. The dual licence compounds this: the Ibexa Business Use Licence requires an active DXP subscription, and the GPLv2 alternative is copyleft and unsuitable for proprietary distribution without legal review. The "NOASSERTION" licence signal in the metadata reflects that dual/compound licence, not a missing licence.
Technical risk.
class_alias BC layers and added type hints — an explicit signal that minor upgrades can be breaking at the code level.Key questions for the vendor and engineering.
PagerSearchDataMapper, criteria builders) covered by any backward-compatibility guarantee across 5.x minors?Verdict. Do not evaluate this as a candidate library. Evaluate it as one component of an Ibexa DXP platform decision. If Ibexa DXP is already the chosen CMS, this package is a reason to keep the platform current; if it is not, this package should not be a reason to adopt it.
Stack fit. The framing of this package as a "Laravel/PHP package" is the first thing to correct. It is a Symfony bundle family with Ibexa-specific service wiring; there is no documented path for registering it inside a Laravel container, and doing so would mean reimplementing Ibexa's repository, configuration provider, and content model — a multi-quarter effort with no vendor support. Stack fit is therefore binary: full DXP stack, or no fit.
Migration path.
ibexa/search transitively. Do not pin it independently.class_alias shims), not as a package bump.Compatibility. Hard constraints: PHP 8.3 minimum on 5.x, Symfony 7.x (7.3/7.4 LTS as of the recent bumps), and a matching Ibexa DXP core version. The 4.6 line is the compatibility escape hatch for older PHP/Symfony baselines. Confirm the search engine version matrix (Solr/Elasticsearch) independently — that is a separate operational dependency with its own upgrade cadence.
Sequencing.
Maintenance. Low effort but non-zero, and it is vendor-paced. Expect frequent releases that are mostly "No significant changes" (version-alignment bumps and CI workflow tweaks) punctuated by the occasional real fix — the date-criteria builder fix and the search-suggestion breadcrumb fix are the pattern. Budget for routine platform patch upgrades rather than a bespoke maintenance backlog. The absence of community dependents means no ecosystem of patches, forks, or Stack Overflow answers to fall back on; the vendor documentation and support channel are the only safety net.
Support. Depends entirely on the commercial relationship. With an active Ibexa subscription you get vendor support and the BUL grant; without it you are on GPLv2 with community-only (effectively none, given 4 stars and no dependents) assistance. This is the single largest operational differentiator and should be modelled as a recurring cost, not a one-off.
Scaling. This package does not scale; the search engine behind it does. Capacity planning belongs to Solr/Elasticsearch (heap, shard count, index size) and to PHP-FPM/web tier for the UI. Two scaling-relevant behaviours to watch: autocomplete/suggestion endpoints are high-frequency and benefit from caching or throttling, and facet-heavy result pages multiply query cost per request.
Failure modes.
class_alias layers and added type hints in 5.0 means custom extensions touching these classes will break. Inventory any local overrides before upgrading.Ramp-up. The learning curve is Ibexa domain knowledge, not search theory: content model, content types, criteria builders, facets, and the DXP configuration layer. A competent Symfony/PHP developer needs several weeks to become productive inside Ibexa, and relevance tuning is an ongoing specialist activity rather than a one-time setup. Budget for at least one engineer to own search as a named responsibility, and plan knowledge transfer around platform upgrades specifically — that is when the coupling to Ibexa core is felt.
How can I help you explore Laravel packages today?