{"record":{"id":"35016d08369fbfd3","repo":"tinyhumansai/openhuman","slug":"searxng-search-query-cannot-be-empty","errorCode":null,"errorMessage":"SearXNG search query cannot be empty","messagePattern":"SearXNG search query cannot be empty","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/search/tools/searxng.rs","lineNumber":139,"sourceCode":"        timeout_secs: u64,\n        http_client: reqwest::Client,\n    ) -> Self {\n        let timeout = timeout_secs.max(1);\n\n        Self {\n            base_url,\n            max_results: max_results.clamp(1, MAX_RESULTS),\n            default_language,\n            timeout_secs: timeout,\n            http_client,\n        }\n    }\n\n    /// Execute a SearXNG JSON search and normalize the returned result rows.\n    pub async fn search(&self, args: SearxngSearchArgs) -> anyhow::Result<SearxngSearchResponse> {\n        let query = args.query.trim();\n        if query.is_empty() {\n            anyhow::bail!(\"SearXNG search query cannot be empty\");\n        }\n\n        let max_results = args\n            .max_results\n            .unwrap_or(self.max_results)\n            .clamp(1, MAX_RESULTS);\n        let categories = normalize_categories(args.categories)?;\n        let language = args\n            .language\n            .as_deref()\n            .map(str::trim)\n            .filter(|value| !value.is_empty())\n            .unwrap_or_else(|| self.default_language.trim());\n\n        let mut url = self.search_endpoint_url()?;\n        {\n            let mut pairs = url.query_pairs_mut();\n            pairs.append_pair(\"q\", query);","sourceCodeStart":121,"sourceCodeEnd":157,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/search/tools/searxng.rs#L121-L157","documentation":"SearxngClient::search found the query blank after trimming — argument validation before any URL is built. The SearXNG instance is never contacted.","triggerScenarios":"Thrown at src/openhuman/search/tools/searxng.rs:139 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-issue the search with a non-empty query string"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}