| 36 | } |
| 37 | |
| 38 | public String search(String query, int topK) { |
| 39 | if (query == null || query.isBlank()) { |
| 40 | return "搜索关键词不能为空"; |
| 41 | } |
| 42 | SearchProvider provider = searchProvider(); |
| 43 | if (!provider.isReady()) { |
| 44 | return "警告: " + provider.unavailableHint(); |
| 45 | } |
| 46 | try { |
| 47 | return formatSearchResults(provider.name(), query, provider.search(query.trim(), topK)); |
| 48 | } catch (Exception e) { |
| 49 | return "搜索失败 (" + provider.name() + "): " + e.getMessage(); |
| 50 | } |
| 51 | } |
| 52 | |
| 53 | public String fetch(String url, int maxChars) { |
| 54 | if (url == null || url.isBlank()) { |