镜像自地址
https://github.com/lhly/search-syntax-pro.git
已同步 2026-10-21 06:41:51 +08:00
- 新增Yandex和DuckDuckGo搜索引擎适配器配置 - 更新manifest.json添加新搜索引擎权限 - 优化URL工具类支持更多搜索引擎参数解析 - 移除调试日志输出 - 修复百度搜索输入框选择器兼容性问题 - 添加文档归档和历史需求规范 版本升级至1.8.6
634 行
18 KiB
Markdown
634 行
18 KiB
Markdown
# Requirements Confirmation - Search Engine Adapters Expansion
|
|
|
|
## ✅ Final Requirements (Quality Score: 92/100)
|
|
|
|
### 项目概述
|
|
为 SearchSyntax Pro Chrome 扩展添加 7 个新搜索引擎的适配器支持,确保所有高级语法与官方搜索引擎支持保持一致,并提供完整的国际化支持(中文+英文)。
|
|
|
|
---
|
|
|
|
## 1. 功能范围与优先级
|
|
|
|
### 实施范围 (基于用户回答 Q1.1=C, Q1.2=C)
|
|
|
|
#### ✅ 包含的搜索引擎(7个,分三阶段实施)
|
|
|
|
**Phase 1: 兼容性引擎** (基于现有语法模式)
|
|
1. **Yahoo Search** - 全球市场份额2-3%, Bing语法兼容
|
|
2. **Startpage** - 隐私友好, Google语法兼容
|
|
3. **Ecosia** - 环保搜索, Google/Bing混合语法
|
|
|
|
**Phase 2: 区域市场引擎** (需要独立适配)
|
|
4. **Naver** (네이버) - 韩国最大搜索引擎,市场份额60%+
|
|
5. **Sogou** (搜狗) - 中国第二大搜索引擎,市场份额约15%
|
|
6. **360搜索** (Haosou/好搜) - 中国市场份额10-15%
|
|
|
|
**Phase 3: 欧洲市场引擎**
|
|
7. **Qwant** - 法国隐私搜索引擎,基础语法支持
|
|
|
|
#### ❌ 排除的搜索引擎(2个)
|
|
- **Perplexity AI** - AI搜索引擎,暂不实施
|
|
- **You.com** - AI搜索引擎,暂不实施
|
|
|
|
### 实施策略说明
|
|
- 采用分批实施策略,降低风险并便于增量验证
|
|
- Phase 1 可复用现有适配器逻辑,快速实现
|
|
- Phase 2/3 需要独立研究和适配,预留充足时间
|
|
|
|
---
|
|
|
|
## 2. 搜索引擎语法支持矩阵 (基于官方文档研究)
|
|
|
|
### 研究方法 (基于用户回答 Q2.1=联网查询官方支持)
|
|
已通过网络搜索验证各搜索引擎的官方语法支持情况,确保实现与官方能力一致。
|
|
|
|
### 语法支持详情
|
|
|
|
| 搜索引擎 | 基础语法 | 多关键词支持 | 特殊语法 | 官方文档来源 |
|
|
|---------|---------|------------|---------|-----------|
|
|
| **Yahoo** | site:, filetype:, intitle:, inurl:, inbody: | ✅ 支持OR组合 | 与Bing相同 | Bing-compatible |
|
|
| **Startpage** | site:, filetype:, intitle:, "", before:, after: | ✅ 支持OR组合 | 与Google相似 | 官方Help Center |
|
|
| **Ecosia** | site:, filetype:, intitle:, inurl:, "" | ✅ 支持OR组合 | Google/Bing混合 | 官方FAQ |
|
|
| **Qwant** | site:, filetype:, "", 基础操作符 | ⚠️ 有限支持 | Qwick快捷方式 | 官方帮助页面 |
|
|
| **Naver** | site:, filetype:, "" | ⚠️ 有限支持 | 韩语优化搜索 | Naver API文档 |
|
|
| **Sogou** | site:, filetype:, intitle:, inurl: | ⚠️ 部分支持 | 中文分词优化 | 搜狗帮助中心 |
|
|
| **360搜索** | site:, filetype:, intitle: | ⚠️ 有限支持 | 中文优化 | 360帮助页面 |
|
|
|
|
### 具体语法支持细节
|
|
|
|
#### Yahoo Search (Bing-compatible)
|
|
```typescript
|
|
支持的语法:
|
|
- site: (单个和多个OR组合)
|
|
- filetype: (单个和多个OR组合)
|
|
- intitle:, allintitle:
|
|
- inurl:, inbody:
|
|
- "" (精确匹配)
|
|
- - (排除)
|
|
- OR (逻辑或)
|
|
|
|
不支持的语法:
|
|
- cache: (需要降级处理)
|
|
- related: (需要降级处理)
|
|
|
|
URL格式: https://search.yahoo.com/search?p={query}
|
|
```
|
|
|
|
#### Startpage (Google-compatible)
|
|
```typescript
|
|
支持的语法:
|
|
- site: (单个和多个OR组合)
|
|
- filetype: (单个和多个OR组合)
|
|
- intitle:
|
|
- "" (精确匹配)
|
|
- before:, after: (日期范围)
|
|
- OR (逻辑或)
|
|
- - (排除)
|
|
|
|
URL格式: https://www.startpage.com/sp/search?query={query}
|
|
```
|
|
|
|
#### Ecosia (Google/Bing hybrid)
|
|
```typescript
|
|
支持的语法:
|
|
- site: (官方文档确认支持)
|
|
- filetype: (官方文档确认支持)
|
|
- "" (精确匹配)
|
|
- OR (逻辑或)
|
|
- - (排除)
|
|
|
|
说明: 官方声明支持Google和Bing的搜索操作符
|
|
|
|
URL格式: https://www.ecosia.org/search?q={query}
|
|
```
|
|
|
|
#### Qwant (基础操作符)
|
|
```typescript
|
|
支持的语法:
|
|
- site: (基础支持)
|
|
- filetype: (基础支持)
|
|
- "" (精确匹配)
|
|
- Qwick快捷方式 (!w Wikipedia等)
|
|
|
|
说明: 语法支持相对有限,文档不够详细
|
|
|
|
URL格式: https://www.qwant.com/?q={query}
|
|
```
|
|
|
|
#### Naver (韩国市场)
|
|
```typescript
|
|
支持的语法:
|
|
- site: (有限支持)
|
|
- filetype: (支持pdf, doc, xls等)
|
|
- "" (精确匹配)
|
|
- 韩语分词和形态分析
|
|
|
|
特点: 针对韩语内容优化,语法文档以韩语为主
|
|
|
|
URL格式: https://search.naver.com/search.naver?query={query}
|
|
```
|
|
|
|
#### Sogou (中国市场)
|
|
```typescript
|
|
支持的语法:
|
|
- site: (官方帮助确认支持)
|
|
- filetype: (官方帮助确认支持,包括pdf, doc, xls, ppt等)
|
|
- intitle:, inurl: (基于官方帮助推断)
|
|
- "" (精确匹配)
|
|
|
|
特点: 中文分词优化,拼音搜索支持
|
|
|
|
URL格式: https://www.sogou.com/web?query={query}
|
|
```
|
|
|
|
#### 360搜索 (中国市场)
|
|
```typescript
|
|
支持的语法:
|
|
- site: (基础支持)
|
|
- filetype: (基础支持)
|
|
- intitle: (基础支持)
|
|
- "" (精确匹配)
|
|
|
|
特点: 中文优化,文档有限
|
|
|
|
URL格式: https://www.so.com/s?q={query}
|
|
```
|
|
|
|
---
|
|
|
|
## 3. 技术规格要求
|
|
|
|
### 3.1 语法降级策略 (基于用户回答 Q2.2=A)
|
|
|
|
**策略选择**: 选项A - 直接忽略并发出警告
|
|
|
|
```typescript
|
|
// 降级处理示例
|
|
degradeSyntax(params: SearchParams): SearchParams {
|
|
const degradedParams = { ...params }
|
|
const warnings: string[] = []
|
|
|
|
// 如果引擎不支持某语法,设为undefined并记录警告
|
|
if (!this.getSupportedSyntax().includes('cache') && params.cacheSite) {
|
|
degradedParams.cacheSite = undefined
|
|
warnings.push(
|
|
translate(language, 'adapter.validation.unsupported_syntax', {
|
|
syntax: 'cache:',
|
|
engine: this.getName()
|
|
})
|
|
)
|
|
}
|
|
|
|
if (warnings.length > 0) {
|
|
console.warn(`[${this.getName()}] 语法降级:`, warnings.join('; '))
|
|
}
|
|
|
|
return degradedParams
|
|
}
|
|
```
|
|
|
|
### 3.2 多关键词支持 (基于用户回答 Q2.3=联网确认官方支持)
|
|
|
|
**要求**: 确保所有多关键词功能与官方搜索引擎的支持程度保持一致
|
|
|
|
```typescript
|
|
// 仅当官方支持OR操作符时才实现多关键词组合
|
|
buildSearchQuery(params: SearchParams): string {
|
|
let query = params.keywords || ''
|
|
|
|
// 多域名支持 (仅当引擎支持OR时)
|
|
if (this.supportsOR()) {
|
|
const sites = params.sites?.filter(s => s.trim()) || []
|
|
if (sites.length > 0) {
|
|
const siteQuery = sites
|
|
.map(s => `site:${this.cleanSiteDomain(s.trim())}`)
|
|
.join(' OR ')
|
|
query += sites.length > 1 ? ` (${siteQuery})` : ` ${siteQuery}`
|
|
}
|
|
}
|
|
|
|
// 多文件类型支持 (仅当引擎支持OR时)
|
|
if (this.supportsOR()) {
|
|
const fileTypes = params.fileTypes?.filter(ft => ft.trim()) || []
|
|
if (fileTypes.length > 0) {
|
|
const ftQuery = fileTypes
|
|
.map(ft => `filetype:${ft.trim().toLowerCase()}`)
|
|
.join(' OR ')
|
|
query += fileTypes.length > 1 ? ` (${ftQuery})` : ` ${ftQuery}`
|
|
}
|
|
}
|
|
|
|
return query
|
|
}
|
|
```
|
|
|
|
### 3.3 适配器接口实现
|
|
|
|
所有新适配器必须实现 `SearchEngineAdapter` 接口:
|
|
|
|
```typescript
|
|
interface SearchEngineAdapter {
|
|
getName(): string // 引擎名称(中文)
|
|
getBaseUrl(): string // 基础URL
|
|
buildQuery(params: SearchParams): string // 构建搜索URL
|
|
getSupportedSyntax(): SyntaxType[] // 支持的语法列表
|
|
validateParams(params: SearchParams): Promise<ValidationResult>
|
|
degradeSyntax(params: SearchParams): SearchParams
|
|
getSearchSuggestions?(): string[] // 可选: 搜索建议
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 4. 国际化要求 (基于用户回答 Q3.1/Q3.2/Q3.3)
|
|
|
|
### 4.1 语言支持范围 (用户回答 Q3.2=仅中文与英文)
|
|
|
|
**明确要求**: 所有文本必须且仅支持项目本身存在的国际化语言配置:
|
|
- ✅ zh-CN (简体中文)
|
|
- ✅ en-US (英语)
|
|
- ❌ 不添加 ko-KR (韩语) - 即使是Naver引擎
|
|
- ❌ 不添加其他语言
|
|
|
|
### 4.2 翻译键命名规范
|
|
|
|
#### 引擎名称
|
|
```typescript
|
|
// src/i18n/translations.ts
|
|
export const translations = {
|
|
'zh-CN': {
|
|
common: {
|
|
searchEngines: {
|
|
yahoo: 'Yahoo搜索',
|
|
startpage: 'Startpage',
|
|
ecosia: 'Ecosia',
|
|
qwant: 'Qwant',
|
|
naver: 'Naver',
|
|
sogou: '搜狗',
|
|
so360: '360搜索'
|
|
}
|
|
}
|
|
},
|
|
'en-US': {
|
|
common: {
|
|
searchEngines: {
|
|
yahoo: 'Yahoo Search',
|
|
startpage: 'Startpage',
|
|
ecosia: 'Ecosia',
|
|
qwant: 'Qwant',
|
|
naver: 'Naver',
|
|
sogou: 'Sogou',
|
|
so360: '360 Search'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
#### 验证消息
|
|
```typescript
|
|
// 新增验证消息翻译键
|
|
adapter: {
|
|
validation: {
|
|
unsupported_syntax: '{engine}不支持{syntax}语法,该参数将被忽略',
|
|
unsupported_multi_keyword: '{engine}不支持多关键词OR组合',
|
|
query_too_long: '查询长度超过{engine}的限制({max}字符)',
|
|
// ... 其他验证消息
|
|
}
|
|
}
|
|
```
|
|
|
|
#### 搜索建议国际化 (基于用户回答 Q3.3)
|
|
```typescript
|
|
// getSearchSuggestions() 返回的提示需要国际化
|
|
async getSearchSuggestions(): Promise<string[]> {
|
|
const language = await getCurrentLanguage()
|
|
return [
|
|
translate(language, 'adapter.suggestions.site_search'),
|
|
translate(language, 'adapter.suggestions.filetype_search'),
|
|
translate(language, 'adapter.suggestions.exact_match')
|
|
]
|
|
}
|
|
```
|
|
|
|
### 4.3 国际化实施清单
|
|
|
|
- [ ] 添加7个新引擎的名称翻译 (zh-CN + en-US)
|
|
- [ ] 添加引擎特定的验证错误消息
|
|
- [ ] 添加语法降级警告消息
|
|
- [ ] 添加搜索建议提示文本
|
|
- [ ] 更新 `common.searchEngines` 类别
|
|
- [ ] 确保所有用户可见文本都通过 `translate()` 函数
|
|
|
|
---
|
|
|
|
## 5. 测试要求 (基于用户回答 Q4.1=B, Q4.2=B)
|
|
|
|
### 5.1 参数验证策略 (选项B: 宽松验证)
|
|
|
|
```typescript
|
|
// 仅警告,允许搜索继续
|
|
async validateParams(params: SearchParams): Promise<ValidationResult> {
|
|
const warnings: string[] = []
|
|
const language = await getCurrentLanguage()
|
|
|
|
// 检查不支持的语法,但仅警告不阻止
|
|
if (params.cacheSite && !this.getSupportedSyntax().includes('cache')) {
|
|
warnings.push(
|
|
translate(language, 'adapter.validation.unsupported_syntax', {
|
|
syntax: 'cache:',
|
|
engine: this.getName()
|
|
})
|
|
)
|
|
}
|
|
|
|
return {
|
|
isValid: true, // 始终返回true,不阻止搜索
|
|
warnings: warnings.length > 0 ? warnings : undefined
|
|
}
|
|
}
|
|
```
|
|
|
|
### 5.2 测试覆盖范围 (选项B: 仅核心逻辑需要测试)
|
|
|
|
**必须测试的核心逻辑**:
|
|
```typescript
|
|
describe('YahooAdapter', () => {
|
|
// ✅ 必须: URL构建测试
|
|
it('should build correct search URL', () => {
|
|
const adapter = new YahooAdapter()
|
|
const url = adapter.buildQuery({ keywords: 'test' })
|
|
expect(url).toContain('search.yahoo.com')
|
|
})
|
|
|
|
// ✅ 必须: 多关键词组合测试 (如果支持)
|
|
it('should combine multiple sites with OR', () => {
|
|
const url = adapter.buildQuery({
|
|
keywords: 'test',
|
|
sites: ['example.com', 'test.com']
|
|
})
|
|
expect(url).toContain('site:example.com OR site:test.com')
|
|
})
|
|
|
|
// ✅ 必须: 语法降级测试
|
|
it('should degrade unsupported syntax', () => {
|
|
const degraded = adapter.degradeSyntax({
|
|
keywords: 'test',
|
|
cacheSite: 'example.com' // Yahoo不支持cache:
|
|
})
|
|
expect(degraded.cacheSite).toBeUndefined()
|
|
})
|
|
|
|
// ❌ 不需要: UI集成测试
|
|
// ❌ 不需要: E2E测试
|
|
// ❌ 不需要: 性能测试
|
|
})
|
|
```
|
|
|
|
**测试文件结构**:
|
|
```
|
|
src/services/adapters/
|
|
├── yahoo.test.ts ✅ 核心逻辑测试
|
|
├── startpage.test.ts ✅ 核心逻辑测试
|
|
├── ecosia.test.ts ✅ 核心逻辑测试
|
|
├── qwant.test.ts ✅ 核心逻辑测试
|
|
├── naver.test.ts ✅ 核心逻辑测试
|
|
├── sogou.test.ts ✅ 核心逻辑测试
|
|
└── so360.test.ts ✅ 核心逻辑测试
|
|
```
|
|
|
|
---
|
|
|
|
## 6. UI/UX决策
|
|
|
|
### 6.1 引擎显示顺序 (保持现有实现)
|
|
基于现有代码分析,引擎顺序由 `factory.ts` 中的注册顺序决定,无需特殊处理。
|
|
|
|
### 6.2 引擎选择器UI (保持现有实现)
|
|
使用现有下拉选择器,无需修改UI组件。
|
|
|
|
---
|
|
|
|
## 7. 边界情况处理
|
|
|
|
### 7.1 引擎不可用处理 (保守策略)
|
|
```typescript
|
|
// 如果URL格式变化,记录错误但允许继续
|
|
buildQuery(params: SearchParams): string {
|
|
try {
|
|
const baseUrl = this.getBaseUrl()
|
|
const query = this.buildSearchQuery(params)
|
|
return `${baseUrl}?q=${encodeURIComponent(query)}`
|
|
} catch (error) {
|
|
console.error(`[${this.getName()}] URL构建失败:`, error)
|
|
// 返回基础URL,允许用户尝试
|
|
return `${this.getBaseUrl()}?q=${encodeURIComponent(params.keywords || '')}`
|
|
}
|
|
}
|
|
```
|
|
|
|
### 7.2 查询长度限制 (统一保守策略)
|
|
```typescript
|
|
// 所有引擎统一使用180字符限制(最保守)
|
|
const MAX_QUERY_LENGTH = 180
|
|
|
|
async validateParams(params: SearchParams): Promise<ValidationResult> {
|
|
const warnings: string[] = []
|
|
const language = await getCurrentLanguage()
|
|
|
|
const fullQuery = this.buildSearchQuery(params)
|
|
if (fullQuery.length > MAX_QUERY_LENGTH) {
|
|
warnings.push(
|
|
translate(language, 'adapter.validation.query_too_long', {
|
|
engine: this.getName(),
|
|
max: MAX_QUERY_LENGTH.toString()
|
|
})
|
|
)
|
|
}
|
|
|
|
return { isValid: true, warnings: warnings.length > 0 ? warnings : undefined }
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 8. 实施计划
|
|
|
|
### Phase 1: 兼容性引擎 (预计2-3小时)
|
|
```yaml
|
|
Yahoo:
|
|
- 复用 BingAdapter 逻辑
|
|
- 修改 baseUrl 和引擎名称
|
|
- 添加翻译键
|
|
- 编写核心测试
|
|
|
|
Startpage:
|
|
- 复用 GoogleAdapter 逻辑
|
|
- 修改 baseUrl
|
|
- 验证语法兼容性
|
|
- 添加翻译和测试
|
|
|
|
Ecosia:
|
|
- 混合 Google/Bing 语法
|
|
- 实现基础操作符
|
|
- 添加翻译和测试
|
|
```
|
|
|
|
### Phase 2: 区域市场引擎 (预计3-4小时)
|
|
```yaml
|
|
Naver:
|
|
- 独立实现韩国市场特性
|
|
- 仅提供中英文翻译
|
|
- 实现基础语法支持
|
|
- 测试韩语查询处理
|
|
|
|
Sogou:
|
|
- 参考 Baidu 实现
|
|
- 实现中文分词优化
|
|
- 支持官方确认的语法
|
|
- 添加翻译和测试
|
|
|
|
360搜索:
|
|
- 参考 Sogou/Baidu
|
|
- 实现基础语法
|
|
- 中文优化
|
|
- 添加翻译和测试
|
|
```
|
|
|
|
### Phase 3: 欧洲市场引擎 (预计1-2小时)
|
|
```yaml
|
|
Qwant:
|
|
- 实现基础操作符
|
|
- 支持 Qwick 快捷方式(可选)
|
|
- 添加翻译和测试
|
|
```
|
|
|
|
### 集成和验收 (预计1小时)
|
|
```yaml
|
|
- 在 factory.ts 注册所有新适配器
|
|
- 手动测试每个引擎的搜索功能
|
|
- 验证国际化完整性
|
|
- 测试语法降级警告
|
|
- 更新 README.md
|
|
```
|
|
|
|
**总预计时间**: 7-10小时
|
|
|
|
---
|
|
|
|
## 9. 验收标准
|
|
|
|
### 功能验收
|
|
- [ ] 7个新搜索引擎全部实现并注册
|
|
- [ ] 所有引擎的语法支持与官方能力一致
|
|
- [ ] 多关键词OR组合仅在官方支持时启用
|
|
- [ ] 语法降级正确处理,发出适当警告
|
|
- [ ] 所有核心逻辑都有单元测试
|
|
|
|
### 国际化验收
|
|
- [ ] 所有引擎名称有中英文翻译
|
|
- [ ] 所有验证消息有中英文翻译
|
|
- [ ] 所有搜索建议有中英文翻译
|
|
- [ ] 切换语言时所有文本正确显示
|
|
- [ ] 不包含中英文以外的语言
|
|
|
|
### 代码质量验收
|
|
- [ ] 遵循现有适配器模式
|
|
- [ ] TypeScript类型安全
|
|
- [ ] 无ESLint错误
|
|
- [ ] 代码风格与现有代码一致
|
|
- [ ] 充分的代码注释(中文)
|
|
|
|
### 用户体验验收
|
|
- [ ] 手动测试每个引擎可正常搜索
|
|
- [ ] 不支持的语法显示警告但不阻止搜索
|
|
- [ ] 查询过长时显示警告
|
|
- [ ] 引擎选择器包含所有新引擎
|
|
|
|
---
|
|
|
|
## 10. 风险与缓解
|
|
|
|
### 风险识别
|
|
1. **官方语法文档不完整**: 中文搜索引擎(Sogou, 360)的英文文档有限
|
|
- **缓解**: 基于中文官方帮助页面和实际测试验证
|
|
|
|
2. **URL格式可能变化**: 搜索引擎可能更新URL结构
|
|
- **缓解**: 使用保守的错误处理,允许搜索继续
|
|
|
|
3. **多关键词支持不确定**: 部分引擎的OR支持未明确文档
|
|
- **缓解**: 通过实际测试验证,不确定时禁用
|
|
|
|
### 假设和依赖
|
|
- 假设: 搜索引擎URL格式在可预见的未来保持稳定
|
|
- 假设: 官方文档和帮助页面的信息准确
|
|
- 依赖: 现有 `SearchEngineAdapter` 接口和工厂模式不变
|
|
|
|
---
|
|
|
|
## 11. 质量评分明细 (92/100)
|
|
|
|
### 功能清晰度 (28/30) ⬆️+13
|
|
- ✅ 明确了7个待添加的搜索引擎
|
|
- ✅ 明确了排除2个AI引擎
|
|
- ✅ 提供了每个引擎的语法支持矩阵
|
|
- ✅ 确认了多关键词支持策略(基于官方支持)
|
|
- ⚠️ 部分中文引擎的语法文档仍需实际测试验证
|
|
|
|
### 技术具体性 (23/25) ⬆️+13
|
|
- ✅ 完整的语法降级策略(选项A)
|
|
- ✅ 详细的URL格式和参数定义
|
|
- ✅ 多关键词实现模式(基于OR支持)
|
|
- ✅ 代码示例覆盖所有关键场景
|
|
- ⚠️ 部分引擎的特殊处理细节需要实施时确认
|
|
|
|
### 实现完整性 (22/25) ⬆️+12
|
|
- ✅ 完整的国际化方案(zh-CN + en-US)
|
|
- ✅ 明确的测试策略(核心逻辑测试)
|
|
- ✅ 边界情况处理(查询长度,URL失败)
|
|
- ✅ 分阶段实施计划
|
|
- ⚠️ 实际实施时可能发现额外边界情况
|
|
|
|
### 业务上下文 (19/20) ⬆️+9
|
|
- ✅ 清晰的验收标准
|
|
- ✅ 风险识别和缓解措施
|
|
- ✅ 预估工作量和时间
|
|
- ✅ 用户价值明确(扩展引擎支持)
|
|
- ✅ 优先级和阶段划分合理
|
|
|
|
---
|
|
|
|
## 12. 后续步骤
|
|
|
|
1. ✅ **需求确认完成** - 质量评分92/100
|
|
2. ⏸️ **等待用户批准** - 需要用户明确同意后才进入实施阶段
|
|
3. ⏳ **Phase 1 实施** - Yahoo, Startpage, Ecosia
|
|
4. ⏳ **Phase 2 实施** - Naver, Sogou, 360搜索
|
|
5. ⏳ **Phase 3 实施** - Qwant
|
|
6. ⏳ **集成测试和验收**
|
|
|
|
---
|
|
|
|
## 附录: 研究来源
|
|
|
|
### 官方文档和帮助页面
|
|
- Yahoo: Bing语法兼容性参考
|
|
- Startpage: 官方Help Center确认Google/Bing操作符支持
|
|
- Ecosia: 官方FAQ确认Google和Bing搜索操作符支持
|
|
- Qwant: 官方帮助页面提及基础操作符和Qwick快捷方式
|
|
- Naver: Naver Search API文档和帮助中心
|
|
- Sogou: 搜狗帮助中心确认filetype等语法支持
|
|
- 360搜索: 360帮助页面基础语法说明
|
|
|
|
### 技术参考
|
|
- 现有适配器实现: Google, Bing, Baidu等10个引擎
|
|
- SearchEngineAdapter接口定义
|
|
- 多关键词OR组合模式(已在Google/Bing中验证)
|
|
- i18n翻译系统和translate()函数
|
|
|
|
---
|
|
|
|
**文档版本**: 2.0 (最终版)
|
|
**最后更新**: 2025-11-26
|
|
**状态**: ✅ 需求确认完成,等待用户批准
|