init: Search Hub - 统一多搜索引擎聚合服务
This commit is contained in:
63
providers/base.py
Normal file
63
providers/base.py
Normal 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,
|
||||
}
|
||||
Reference in New Issue
Block a user