waaseyaa / search
Search provider interface and DTOs for Waaseyaa
v0.1.0-alpha.218
2026-06-16 01:58 UTC
Requires
- php: >=8.5
- symfony/event-dispatcher: ^7.0
- twig/twig: ^3.0
- waaseyaa/database-legacy: ^0.1.0-alpha.218
- waaseyaa/entity: ^0.1.0-alpha.218
- waaseyaa/foundation: ^0.1.0-alpha.218
Requires (Dev)
- phpunit/phpunit: ^10.5
This package is auto-updated.
Last update: 2026-06-16 02:04:08 UTC
README
Layer 3 — Services
Full-text and structured search for Waaseyaa applications.
Provides a search index abstraction and query builder for finding entities across types. Supports indexed field selection, faceting, and relevance ranking. Integrates with the API layer for search endpoints.
Key classes: SearchRequest, SearchResult, SearchProviderInterface.
Implementation gotchas
- FTS5
SELECT m.*misses FTS5 columns: When joiningsearch_index(FTS5) withsearch_metadata,m.*only selects metadata columns. To get FTS5 content columns (title, body), select them explicitly:si.title,si.body. Thesnippet()function also requires column index references into the FTS5 table. - FTS5 query escaping must strip special chars: FTS5 treats
*,^,{},:,"as operators in addition toAND/OR/NOT/NEAR. Quoting terms with"..."is not sufficient — strip special characters before quoting to prevent query injection.