The search had three separate bugs — a filter fighting a filter, results that
were heading fragments, table cells run together without separators — and all
three were invisible, because nobody could see the sections the index is built
from.

::devtools-panel{tab="search"}
::

## Reading it

**One row per heading**, not per page. That is what the index stores and what the
dialog groups back into pages, so a page with eight headings is eight rows.

The **indexed text** column is exactly what FTS5 matches against. If a word is
missing there, no query will find it, however correct the page looks.

::callout{type="tip"}
FTS5 matches terms and prefixes, not substrings: `caching` finds `caching`, `cach`
finds it too, and `aching` finds nothing. A search that comes back empty is
usually this, not a missing page.
::