Which cached stores to build the corpus from. The plain-English aliases
("both", "cache", "results") are accepted alongside the store names so the
console call reads naturally.
One cached product title plus the provenance needed to interpret a score.
Options for fuzzTest / scoreCorpus.
A corpus entry annotated with a single score.
Result of scoring a corpus with every active scorer.
Options for astTest / evaluateCorpusAst.
A corpus entry that failed the AST predicate, with the leaves responsible.
Result of evaluating a corpus against a parsed search query.
Builds a deduplicated corpus of product titles from the local IndexedDB caches. No
network requests are made — this reads supplier_query_cache (the raw per-supplier
result sets, which carry the originating query) and the persisted search_results
row (the products currently in the results table).
Lists the distinct supplier names present in a corpus, sorted with the most
titles first. Use it to discover the exact spellings the suppliers filter expects.
Scores every corpus title with every active fuzz scorer, so the scorers can be compared side by side against real product titles. Pure — performs no IO and prints nothing; fuzzTest is the console-facing wrapper.
Renders a parsed search AST as a readable one-line expression, so a printed probe shows how the query was actually parsed rather than just echoing the raw input.
Explains why a title failed an AST predicate: missing phrases are listed verbatim,
and a NOT branch that excluded the title is reported as NOT <phrase>. Every drop
gets at least one reason, so the dropped table is never blank.
Evaluates a corpus against an advanced (boolean) search query using the same
parseSearchQuery → scoreAstMatch path production suppliers take in
SupplierBase.fuzzyFilterAst. Pure — performs no IO and prints nothing.
Prints a FuzzProbeResult as console tables: one ranked table per scorer, then the merged title-by-scorer matrix, then the biggest scorer disagreements.
Prints an AstProbeResult as console tables: the parsed AST, the ranked
survivors, the drops with their failed terms, and any fuzzyWords flips.
Runs a query against every cached product title with all nine fuzz scorers and
prints them side by side — the offline equivalent of SupplierBase.fuzzyFilter's
dev-only comparison table, but over the whole local cache and with no search.
Runs an advanced (boolean) query against every cached product title through the
real parseSearchQuery → scoreAstMatch path, showing which titles the predicate
keeps, which it drops and why, and which drops hinge on fuzzyWords.
Where a corpus title was read from.