Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Decisions

← back to the README

Why this package works the way it does. Each record states the problem as it stood, what was chosen, and what that choice costs — the last part being the one worth reading before you file a bug about it.

Record 0 is the one the package exists to serve; the rest are choices made underneath it.

#DecisionCosts you
0Why this exists: cheap, simple indexing for Scout on SQLiteNarrow scope by design
1Build on SQLite FTS5 rather than a portable indexRuns on SQLite only
2Derive index tables from models, not migrationsSchema changes need a rebuild
3Store integer keys in rowidString-keyed models scan on write
4Answer a query with a cascade of passesA query that finds nothing runs all four
5Require a share of one word’s substringsA threshold to tune, not a universal answer
6Order, filter and paginate in SQLThe index must share a connection with the models
7Quote every word as an FTS5 phraseUsers cannot write FTS5 query syntax
8Throw on a filter that matches no columnA typo breaks the request instead of quietly narrowing it
9Test through a booted Laravel applicationThe full framework is a dev dependency