init: Search Hub - 统一多搜索引擎聚合服务

This commit is contained in:
2026-05-09 18:46:05 +08:00
commit 81d726179c
27 changed files with 3179 additions and 0 deletions

63
providers/base.py Normal file
View File

@@ -0,0 +1,63 @@
"""搜索源抽象基类 — 所有搜索源统一接口"""
from abc import ABC, abstractmethod
class SearchResult:
"""统一搜索结果格式"""
def __init__(self, title='', url='', content='', score=0.0, source='',
published_date=''):
self.title = title
self.url = url
self.content = content
self.score = score
self.source = source
self.published_date = published_date
def to_dict(self):
return {
'title': self.title,
'url': self.url,
'content': self.content,
'score': self.score,
'source': self.source,
'published_date': self.published_date or '',
}
class BaseProvider(ABC):
"""搜索源基类"""
# 源名称(唯一标识)
name = ''
# 展示名称
display_name = ''
# 是否需要 API key
needs_api_key = False
# 是否默认启用
enabled = False
# 优先级(数字越小越优先)
priority = 100
def __init__(self, config: dict):
self.config = config
@abstractmethod
def search(self, query: str, max_results: int = 10) -> list:
"""执行搜索,返回 SearchResult 列表"""
...
def is_available(self) -> bool:
"""检查当前源是否可用"""
return True
def get_status(self) -> dict:
"""返回源状态信息"""
return {
'name': self.name,
'display_name': self.display_name,
'available': self.is_available(),
'enabled': self.enabled,
'needs_api_key': self.needs_api_key,
'priority': self.priority,
}