Full-text search differs more between engines than any other feature: Informix ranks and fuzzes, PostgreSQL ranks, SQL Server neither. A query form that pretends otherwise either breaks or lies. This release makes the capability explicit and lets every surface read it.
Three tiers per column
- Full A text index is present and the search module installed: ranked, and fuzzy where the engine allows.
- Like A text column without an index: a case-insensitive scan.
- None A predicate that matches nothing, rather than an exception, and a field disabled with a reason.
Six engines described
- A descriptor each Informix with Lucene and fuzziness from 0.1 to 0.9; PostgreSQL text search with ranking by coverage density, which previously returned a constant; Oracle Text with ranking; MySQL match against with ranking; SQL Server CONTAINS without ranking; SAP HANA CONTAINS with a fuzzy threshold from 0.5.
- Safe mode Terms are escaped by default, because an unescaped hyphen is a Lucene negation and a search for de-icing returned nothing.
- Surfaced The query form gains a per-field safe or advanced toggle and a help panel built from the descriptor; the explorer gains content search with the tier shown; scripts can ask for the best search and the tier.
The user sees what the engine can do. The engine does what it can. Nothing in between promises more.