aboutsummaryrefslogtreecommitdiff
path: root/castle-search/src/search.ts
diff options
context:
space:
mode:
Diffstat (limited to 'castle-search/src/search.ts')
-rw-r--r--castle-search/src/search.ts12
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