diff options
Diffstat (limited to 'castle-search/src/search.ts')
| -rw-r--r-- | castle-search/src/search.ts | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/castle-search/src/search.ts b/castle-search/src/search.ts index 1c84392..c64735d 100644 --- a/castle-search/src/search.ts +++ b/castle-search/src/search.ts @@ -299,6 +299,18 @@ export const search = async ( }); } + if (probe.results.length === 0 && probe.empty) { + // The engine itself says nothing matched. That is the query's doing, not + // the extractor's or a rate limit's, and saying so stops the caller from + // switching engines for a query no index will answer. + throw new NoResultsError( + `${engine.label} reports no matches for this query (${probe.url || searchUrl}). The page loaded ` + + `normally and the engine says so itself, so this is not a block or a broken extractor — the query ` + + `is too narrow. Drop the quotes or some of the terms; retrying another engine with the same ` + + `over-specific query is unlikely to help.`, + ); + } + if (probe.results.length === 0) { // "container missing entirely" and "container present but empty" are // different faults, and saying which saves the next person a browser |
