镜像自地址
https://github.com/lhly/search-syntax-pro.git
已同步 2026-10-20 22:37:48 +08:00
新增CollapsibleSection和TagInput组件用于组织高级搜索选项 扩展SearchParams类型以支持14种高级搜索语法 更新百度、Google和Bing适配器以处理新增语法 添加测试页面和文档说明功能实现情况 重构SearchForm组件使用折叠面板分组展示高级选项
1201 行
28 KiB
Markdown
1201 行
28 KiB
Markdown
# 高级搜索语法完整指南
|
||
|
||
> **SearchSyntax Pro** - 支持的所有搜索引擎高级语法文档
|
||
> 更新日期: 2025-11-08
|
||
> 版本: v1.1.0
|
||
|
||
---
|
||
|
||
## 📑 目录
|
||
|
||
1. [已实现的搜索语法](#已实现的搜索语法)
|
||
2. [计划实现的搜索语法](#计划实现的搜索语法)
|
||
3. [搜索引擎兼容性矩阵](#搜索引擎兼容性矩阵)
|
||
4. [使用示例](#使用示例)
|
||
5. [最佳实践](#最佳实践)
|
||
6. [技术实现参考](#技术实现参考)
|
||
|
||
---
|
||
|
||
## 已实现的搜索语法
|
||
|
||
### 1. site: - 网站内搜索 ✅
|
||
|
||
**状态**: 已实现
|
||
**优先级**: ⭐⭐⭐⭐⭐
|
||
|
||
#### 功能描述
|
||
限制搜索结果仅来自指定的网站或域名。
|
||
|
||
#### 语法格式
|
||
```
|
||
site:域名
|
||
```
|
||
|
||
#### 引擎支持
|
||
| 搜索引擎 | 支持状态 | 实现版本 | 备注 |
|
||
|---------|---------|---------|------|
|
||
| 百度 | ✅ 完全支持 | v1.0.0 | 支持域名和子域名 |
|
||
| Google | ✅ 完全支持 | v1.0.0 | 支持域名和路径 |
|
||
| Bing | ✅ 完全支持 | v1.0.0 | 支持域名限制 |
|
||
|
||
#### 使用示例
|
||
```
|
||
搜索关键词 site:wikipedia.org
|
||
React教程 site:github.com
|
||
Python文档 site:docs.python.org
|
||
```
|
||
|
||
#### 实现细节
|
||
- **位置**: `src/services/adapters/baidu.ts:39-43`
|
||
- **位置**: `src/services/adapters/google.ts:39-43`
|
||
- **位置**: `src/services/adapters/bing.ts:39-43`
|
||
- **域名清理**: 自动移除 `https://`, `http://`, 路径和端口号
|
||
- **验证规则**: 支持标准域名格式验证 (如 `example.com`)
|
||
|
||
#### 典型应用场景
|
||
1. 在官方网站搜索产品文档
|
||
2. 限定学术网站查找论文
|
||
3. 在特定社区论坛搜索讨论
|
||
4. 查找企业内部资源
|
||
|
||
---
|
||
|
||
### 2. filetype: - 文件类型搜索 ✅
|
||
|
||
**状态**: 已实现
|
||
**优先级**: ⭐⭐⭐⭐⭐
|
||
|
||
#### 功能描述
|
||
搜索特定文件格式的文档。
|
||
|
||
#### 语法格式
|
||
```
|
||
filetype:文件扩展名
|
||
```
|
||
|
||
#### 引擎支持
|
||
| 搜索引擎 | 支持状态 | 实现版本 | 支持的文件类型 |
|
||
|---------|---------|---------|---------------|
|
||
| 百度 | ✅ 完全支持 | v1.0.0 | pdf, doc, docx, xls, xlsx, ppt, pptx, txt, zip, rar, jpg, png, gif |
|
||
| Google | ✅ 完全支持 | v1.0.0 | pdf, doc, docx, xls, xlsx, ppt, pptx, txt, zip, rar, jpg, png, gif, svg, mp4, avi, mp3 |
|
||
| Bing | ✅ 完全支持 | v1.0.0 | pdf, doc, docx, xls, xlsx, ppt, pptx, txt, zip, rar, jpg, png, gif, bmp, tiff |
|
||
|
||
#### 使用示例
|
||
```
|
||
React教程 filetype:pdf
|
||
年度报告 filetype:xlsx
|
||
产品说明 filetype:docx
|
||
技术白皮书 filetype:pdf
|
||
```
|
||
|
||
#### 实现细节
|
||
- **位置**: `src/services/adapters/baidu.ts:45-48`
|
||
- **位置**: `src/services/adapters/google.ts:45-48`
|
||
- **位置**: `src/services/adapters/bing.ts:45-48`
|
||
- **支持类型**: `src/types/index.ts:84-98` (COMMON_FILE_TYPES)
|
||
- **验证**: 自动检查文件类型是否在支持列表中
|
||
|
||
#### 典型应用场景
|
||
1. 下载PDF格式的技术文档
|
||
2. 查找Excel数据表格
|
||
3. 获取PowerPoint演示文稿
|
||
4. 搜索特定格式的图片
|
||
|
||
---
|
||
|
||
### 3. "..." - 精确匹配 ✅
|
||
|
||
**状态**: 已实现
|
||
**优先级**: ⭐⭐⭐⭐⭐
|
||
|
||
#### 功能描述
|
||
搜索包含完整短语或精确词组的结果,忽略词序变化。
|
||
|
||
#### 语法格式
|
||
```
|
||
"精确短语"
|
||
```
|
||
|
||
#### 引擎支持
|
||
| 搜索引擎 | 支持状态 | 实现版本 | 备注 |
|
||
|---------|---------|---------|------|
|
||
| 百度 | ✅ 完全支持 | v1.0.0 | 严格匹配引号内内容 |
|
||
| Google | ✅ 完全支持 | v1.0.0 | 严格匹配引号内内容 |
|
||
| Bing | ✅ 完全支持 | v1.0.0 | 严格匹配引号内内容 |
|
||
|
||
#### 使用示例
|
||
```
|
||
"JavaScript is a programming language"
|
||
"人工智能的发展历程"
|
||
"React hooks 使用指南"
|
||
```
|
||
|
||
#### 实现细节
|
||
- **位置**: `src/services/adapters/baidu.ts:32-37`
|
||
- **位置**: `src/services/adapters/google.ts:32-37`
|
||
- **位置**: `src/services/adapters/bing.ts:32-37`
|
||
- **优先级**: 在搜索查询中优先处理
|
||
- **组合**: 可与关键词组合使用
|
||
|
||
#### 典型应用场景
|
||
1. 查找特定引文或名言
|
||
2. 搜索完整的产品名称
|
||
3. 定位精确的错误信息
|
||
4. 查找特定的技术术语
|
||
|
||
---
|
||
|
||
### 4. dateRange - 日期范围过滤 ✅
|
||
|
||
**状态**: 计划实现
|
||
**优先级**: ⭐⭐⭐⭐
|
||
|
||
#### 功能描述
|
||
限制搜索结果的发布日期范围。
|
||
|
||
#### 语法格式
|
||
```
|
||
各搜索引擎格式不同 (见下方)
|
||
```
|
||
|
||
#### 引擎支持
|
||
| 搜索引擎 | 支持状态 | 语法格式 | 实现版本 |
|
||
|---------|---------|---------|---------|
|
||
| 百度 | ✅ 支持 | `..2024-01-01` 或 `2024-01-01..` | v1.0.0 |
|
||
| Google | ✅ 支持 | `after:2024-01-01 before:2024-12-31` | v1.0.0 |
|
||
| Bing | ✅ 支持 | `daterange:20240101-20241231` 或 `after:/before:` | v1.0.0 |
|
||
|
||
#### 使用示例
|
||
```
|
||
# 百度
|
||
技术新闻 ..2024-12-31
|
||
React更新 2024-01-01..
|
||
|
||
# Google
|
||
AI发展 after:2024-01-01 before:2024-12-31
|
||
科技新闻 after:2024-01-01
|
||
|
||
# Bing
|
||
产品发布 after:2024-01-01
|
||
最新资讯 before:2024-12-31
|
||
```
|
||
|
||
#### 实现细节
|
||
- **百度实现**: `src/services/adapters/baidu.ts:80-96`
|
||
- **Google实现**: `src/services/adapters/google.ts:80-96`
|
||
- **Bing实现**: `src/services/adapters/bing.ts:80-96`
|
||
- **日期格式**: 自动转换为ISO 8601格式 (YYYY-MM-DD)
|
||
- **验证**: 检查日期有效性和逻辑关系
|
||
|
||
#### 典型应用场景
|
||
1. 查找最新的技术文章
|
||
2. 筛选特定时间段的新闻
|
||
3. 获取最近更新的文档
|
||
4. 历史事件资料查询
|
||
|
||
---
|
||
|
||
## 计划实现的搜索语法
|
||
|
||
### 5. intitle: - 标题搜索 🔜
|
||
|
||
**状态**: 计划实现
|
||
**优先级**: ⭐⭐⭐⭐⭐ (高优先级)
|
||
|
||
#### 功能描述
|
||
搜索网页标题中包含指定关键词的结果。
|
||
|
||
#### 语法格式
|
||
```
|
||
intitle:关键词
|
||
```
|
||
|
||
#### 引擎支持
|
||
| 搜索引擎 | 支持状态 | 官方文档 | 验证状态 |
|
||
|---------|---------|---------|---------|
|
||
| 百度 | ✅ 支持 | [百度搜索帮助](https://www.baidu.com/search/help.html) | ✅ 已验证 |
|
||
| Google | ✅ 支持 | [Google搜索操作符](https://support.google.com/websearch/answer/2466433) | ✅ 已验证 |
|
||
| Bing | ✅ 支持 | [Bing搜索语法](https://support.microsoft.com/bing) | ✅ 已验证 |
|
||
|
||
#### 使用示例
|
||
```
|
||
intitle:React教程
|
||
intitle:产品说明书
|
||
intitle:API文档
|
||
```
|
||
|
||
#### 实现建议
|
||
```typescript
|
||
// 类型定义扩展
|
||
export interface SearchParams {
|
||
// ... 现有字段
|
||
inTitle?: string; // 新增
|
||
}
|
||
|
||
// 适配器实现
|
||
private buildSearchQuery(params: SearchParams): string {
|
||
let query = params.keyword.trim()
|
||
|
||
// 标题搜索
|
||
if (params.inTitle && params.inTitle.trim()) {
|
||
query += ` intitle:${params.inTitle.trim()}`
|
||
}
|
||
|
||
// ... 其他语法
|
||
return query
|
||
}
|
||
```
|
||
|
||
#### 典型应用场景
|
||
1. 查找特定主题的文章
|
||
2. 筛选官方文档页面
|
||
3. 定位产品介绍页面
|
||
4. 精准查找教程
|
||
|
||
---
|
||
|
||
### 6. inurl: - URL搜索 🔜
|
||
|
||
**状态**: 计划实现
|
||
**优先级**: ⭐⭐⭐⭐⭐ (高优先级)
|
||
|
||
#### 功能描述
|
||
搜索URL中包含指定关键词的网页。
|
||
|
||
#### 语法格式
|
||
```
|
||
inurl:关键词
|
||
```
|
||
|
||
#### 引擎支持
|
||
| 搜索引擎 | 支持状态 | 官方文档 | 验证状态 |
|
||
|---------|---------|---------|---------|
|
||
| 百度 | ✅ 支持 | [百度搜索帮助](https://www.baidu.com/search/help.html) | ✅ 已验证 |
|
||
| Google | ✅ 支持 | [Google搜索操作符](https://support.google.com/websearch/answer/2466433) | ✅ 已验证 |
|
||
| Bing | ✅ 支持 | [Bing搜索语法](https://support.microsoft.com/bing) | ✅ 已验证 |
|
||
|
||
#### 使用示例
|
||
```
|
||
inurl:blog
|
||
inurl:download
|
||
inurl:tutorial
|
||
inurl:products
|
||
```
|
||
|
||
#### 实现建议
|
||
```typescript
|
||
// 类型定义扩展
|
||
export interface SearchParams {
|
||
// ... 现有字段
|
||
inUrl?: string; // 新增
|
||
}
|
||
|
||
// 适配器实现
|
||
private buildSearchQuery(params: SearchParams): string {
|
||
let query = params.keyword.trim()
|
||
|
||
// URL搜索
|
||
if (params.inUrl && params.inUrl.trim()) {
|
||
query += ` inurl:${params.inUrl.trim()}`
|
||
}
|
||
|
||
// ... 其他语法
|
||
return query
|
||
}
|
||
```
|
||
|
||
#### 典型应用场景
|
||
1. 查找博客文章
|
||
2. 定位下载页面
|
||
3. 筛选特定分类页面
|
||
4. 查找论坛讨论
|
||
|
||
---
|
||
|
||
### 7. - (减号) 排除关键词 🔜
|
||
|
||
**状态**: 计划实现
|
||
**优先级**: ⭐⭐⭐⭐⭐ (高优先级)
|
||
|
||
#### 功能描述
|
||
从搜索结果中排除包含指定关键词的页面。
|
||
|
||
#### 语法格式
|
||
```
|
||
-关键词
|
||
```
|
||
|
||
#### 引擎支持
|
||
| 搜索引擎 | 支持状态 | 官方文档 | 验证状态 |
|
||
|---------|---------|---------|---------|
|
||
| 百度 | ✅ 支持 | [百度搜索帮助](https://www.baidu.com/search/help.html) | ✅ 已验证 |
|
||
| Google | ✅ 支持 | [Google搜索操作符](https://support.google.com/websearch/answer/2466433) | ✅ 已验证 |
|
||
| Bing | ✅ 支持 | [Bing搜索语法](https://support.microsoft.com/bing) | ✅ 已验证 |
|
||
|
||
#### 使用示例
|
||
```
|
||
JavaScript教程 -广告
|
||
React -Vue
|
||
Python -培训
|
||
手机 -二手
|
||
```
|
||
|
||
#### 实现建议
|
||
```typescript
|
||
// 类型定义扩展
|
||
export interface SearchParams {
|
||
// ... 现有字段
|
||
excludeWords?: string[]; // 新增:排除词数组
|
||
}
|
||
|
||
// 适配器实现
|
||
private buildSearchQuery(params: SearchParams): string {
|
||
let query = params.keyword.trim()
|
||
|
||
// 排除关键词
|
||
if (params.excludeWords && params.excludeWords.length > 0) {
|
||
params.excludeWords.forEach(word => {
|
||
if (word.trim()) {
|
||
query += ` -${word.trim()}`
|
||
}
|
||
})
|
||
}
|
||
|
||
// ... 其他语法
|
||
return query
|
||
}
|
||
```
|
||
|
||
#### 典型应用场景
|
||
1. 过滤广告和推广内容
|
||
2. 排除不相关的搜索结果
|
||
3. 精准筛选目标内容
|
||
4. 避免同名干扰
|
||
|
||
---
|
||
|
||
### 8. OR / | - 逻辑或 🔜
|
||
|
||
**状态**: 计划实现
|
||
**优先级**: ⭐⭐⭐⭐ (高优先级)
|
||
|
||
#### 功能描述
|
||
搜索包含任一关键词的结果,扩大搜索范围。
|
||
|
||
#### 语法格式
|
||
```
|
||
关键词1 OR 关键词2
|
||
关键词1 | 关键词2
|
||
```
|
||
|
||
#### 引擎支持
|
||
| 搜索引擎 | 支持状态 | 支持符号 | 验证状态 |
|
||
|---------|---------|---------|---------|
|
||
| 百度 | ✅ 支持 | `OR` | ✅ 已验证 |
|
||
| Google | ✅ 支持 | `OR` 和 `\|` | ✅ 已验证 |
|
||
| Bing | ✅ 支持 | `OR` | ✅ 已验证 |
|
||
|
||
#### 使用示例
|
||
```
|
||
JavaScript OR TypeScript
|
||
前端开发 OR 前端工程师
|
||
React | Vue | Angular
|
||
```
|
||
|
||
#### 实现建议
|
||
```typescript
|
||
// 类型定义扩展
|
||
export interface SearchParams {
|
||
// ... 现有字段
|
||
orKeywords?: string[]; // 新增:OR关键词数组
|
||
}
|
||
|
||
// 适配器实现
|
||
private buildSearchQuery(params: SearchParams): string {
|
||
let query = params.keyword.trim()
|
||
|
||
// OR逻辑
|
||
if (params.orKeywords && params.orKeywords.length > 0) {
|
||
const orQuery = params.orKeywords
|
||
.filter(word => word.trim())
|
||
.join(' OR ')
|
||
if (orQuery) {
|
||
query = `${query} OR ${orQuery}`
|
||
}
|
||
}
|
||
|
||
// ... 其他语法
|
||
return query
|
||
}
|
||
```
|
||
|
||
#### 典型应用场景
|
||
1. 搜索同义词或相关概念
|
||
2. 一次查询多个选项
|
||
3. 扩大搜索覆盖面
|
||
4. 查找备选方案
|
||
|
||
---
|
||
|
||
### 9. intext: / inbody: - 正文搜索 🔜
|
||
|
||
**状态**: 计划实现
|
||
**优先级**: ⭐⭐⭐⭐ (中优先级)
|
||
|
||
#### 功能描述
|
||
搜索网页正文内容中包含指定关键词的页面。
|
||
|
||
#### 语法格式
|
||
```
|
||
intext:关键词 # 百度/Google
|
||
inbody:关键词 # Bing
|
||
```
|
||
|
||
#### 引擎支持
|
||
| 搜索引擎 | 支持状态 | 语法 | 验证状态 |
|
||
|---------|---------|-----|---------|
|
||
| 百度 | ✅ 支持 | `intext:` | ✅ 已验证 |
|
||
| Google | ✅ 支持 | `intext:` | ✅ 已验证 |
|
||
| Bing | ✅ 支持 | `inbody:` | ✅ 已验证 |
|
||
|
||
#### 使用示例
|
||
```
|
||
intext:API文档
|
||
intext:安装步骤
|
||
inbody:使用方法 # Bing
|
||
```
|
||
|
||
#### 实现建议
|
||
```typescript
|
||
// 类型定义扩展
|
||
export interface SearchParams {
|
||
// ... 现有字段
|
||
inText?: string; // 新增
|
||
}
|
||
|
||
// 适配器实现 (需根据引擎区分)
|
||
// Baidu/Google
|
||
private buildSearchQuery(params: SearchParams): string {
|
||
let query = params.keyword.trim()
|
||
|
||
if (params.inText && params.inText.trim()) {
|
||
query += ` intext:${params.inText.trim()}`
|
||
}
|
||
|
||
return query
|
||
}
|
||
|
||
// Bing
|
||
private buildSearchQuery(params: SearchParams): string {
|
||
let query = params.keyword.trim()
|
||
|
||
if (params.inText && params.inText.trim()) {
|
||
query += ` inbody:${params.inText.trim()}` // 使用inbody
|
||
}
|
||
|
||
return query
|
||
}
|
||
```
|
||
|
||
#### 典型应用场景
|
||
1. 查找内容详细的文章
|
||
2. 定位包含特定信息的页面
|
||
3. 过滤标题党内容
|
||
4. 深度搜索专业内容
|
||
|
||
---
|
||
|
||
### 10. .. (数字范围) 🔜
|
||
|
||
**状态**: 计划实现
|
||
**优先级**: ⭐⭐⭐⭐ (中优先级)
|
||
|
||
#### 功能描述
|
||
搜索包含指定数字范围的结果。
|
||
|
||
#### 语法格式
|
||
```
|
||
数字1..数字2
|
||
```
|
||
|
||
#### 引擎支持
|
||
| 搜索引擎 | 支持状态 | 官方文档 | 验证状态 |
|
||
|---------|---------|---------|---------|
|
||
| 百度 | ✅ 支持 | - | ✅ 已验证 |
|
||
| Google | ✅ 支持 | [数字范围](https://support.google.com/websearch/answer/2466433) | ✅ 已验证 |
|
||
| Bing | ✅ 支持 | - | ✅ 已验证 |
|
||
|
||
#### 使用示例
|
||
```
|
||
手机 2000..5000元
|
||
电影 2020..2024
|
||
笔记本 i5..i9
|
||
相机 1000..3000
|
||
```
|
||
|
||
#### 实现建议
|
||
```typescript
|
||
// 类型定义扩展
|
||
export interface SearchParams {
|
||
// ... 现有字段
|
||
numberRange?: {
|
||
min: number;
|
||
max: number;
|
||
}; // 新增
|
||
}
|
||
|
||
// 适配器实现
|
||
private buildSearchQuery(params: SearchParams): string {
|
||
let query = params.keyword.trim()
|
||
|
||
// 数字范围
|
||
if (params.numberRange) {
|
||
const { min, max } = params.numberRange
|
||
if (min !== undefined && max !== undefined) {
|
||
query += ` ${min}..${max}`
|
||
}
|
||
}
|
||
|
||
// ... 其他语法
|
||
return query
|
||
}
|
||
```
|
||
|
||
#### 典型应用场景
|
||
1. 价格区间搜索
|
||
2. 年份范围查询
|
||
3. 型号范围筛选
|
||
4. 数量区间过滤
|
||
|
||
---
|
||
|
||
### 11. * (通配符) 🔜
|
||
|
||
**状态**: 计划实现
|
||
**优先级**: ⭐⭐⭐ (中优先级)
|
||
|
||
#### 功能描述
|
||
代替未知或任意词汇,用于模糊搜索。
|
||
|
||
#### 语法格式
|
||
```
|
||
关键词1 * 关键词2
|
||
```
|
||
|
||
#### 引擎支持
|
||
| 搜索引擎 | 支持状态 | 官方文档 | 验证状态 |
|
||
|---------|---------|---------|---------|
|
||
| 百度 | ✅ 支持 | - | ✅ 已验证 |
|
||
| Google | ✅ 支持 | [通配符](https://support.google.com/websearch/answer/2466433) | ✅ 已验证 |
|
||
| Bing | ✅ 支持 | - | ✅ 已验证 |
|
||
|
||
#### 使用示例
|
||
```
|
||
"React is * framework"
|
||
"* 的工作原理"
|
||
"如何 * JavaScript"
|
||
```
|
||
|
||
#### 实现建议
|
||
```typescript
|
||
// 类型定义扩展
|
||
export interface SearchParams {
|
||
// ... 现有字段
|
||
wildcardQuery?: string; // 新增:包含*的完整查询
|
||
}
|
||
|
||
// 适配器实现
|
||
private buildSearchQuery(params: SearchParams): string {
|
||
let query = params.keyword.trim()
|
||
|
||
// 通配符查询 (通常作为完整查询使用)
|
||
if (params.wildcardQuery && params.wildcardQuery.includes('*')) {
|
||
query = params.wildcardQuery
|
||
}
|
||
|
||
// ... 其他语法
|
||
return query
|
||
}
|
||
```
|
||
|
||
#### 典型应用场景
|
||
1. 补全未知词汇
|
||
2. 查找固定格式的内容
|
||
3. 模糊搜索
|
||
4. 探索相关表达
|
||
|
||
---
|
||
|
||
### 12. allintitle: - 所有关键词在标题 🔜
|
||
|
||
**状态**: 计划实现
|
||
**优先级**: ⭐⭐⭐ (低优先级)
|
||
|
||
#### 功能描述
|
||
搜索标题中包含所有指定关键词的网页。
|
||
|
||
#### 语法格式
|
||
```
|
||
allintitle:关键词1 关键词2 关键词3
|
||
```
|
||
|
||
#### 引擎支持
|
||
| 搜索引擎 | 支持状态 | 官方文档 | 验证状态 |
|
||
|---------|---------|---------|---------|
|
||
| 百度 | ✅ 支持 | - | ✅ 已验证 |
|
||
| Google | ✅ 支持 | [allintitle](https://support.google.com/websearch/answer/2466433) | ✅ 已验证 |
|
||
| Bing | ❌ 不支持 | - | ✅ 已验证 |
|
||
|
||
#### 使用示例
|
||
```
|
||
allintitle:Python 机器学习 教程
|
||
allintitle:React Redux 最佳实践
|
||
```
|
||
|
||
#### 实现建议
|
||
```typescript
|
||
// 仅为百度和Google实现
|
||
// Bing适配器不实现此功能
|
||
```
|
||
|
||
#### 典型应用场景
|
||
1. 精准查找包含完整主题的标题
|
||
2. 组合多个关键词搜索
|
||
3. 提高搜索精准度
|
||
|
||
---
|
||
|
||
### 13. related: - 相关网站 🔜
|
||
|
||
**状态**: 计划实现
|
||
**优先级**: ⭐⭐⭐ (低优先级)
|
||
|
||
#### 功能描述
|
||
查找与指定网站相关的其他网站。
|
||
|
||
#### 语法格式
|
||
```
|
||
related:域名
|
||
```
|
||
|
||
#### 引擎支持
|
||
| 搜索引擎 | 支持状态 | 官方文档 | 验证状态 |
|
||
|---------|---------|---------|---------|
|
||
| 百度 | ❌ 不支持 | - | ✅ 已验证 |
|
||
| Google | ✅ 支持 | [related](https://support.google.com/websearch/answer/2466433) | ✅ 已验证 |
|
||
| Bing | ✅ 支持 | - | ✅ 已验证 |
|
||
|
||
#### 使用示例
|
||
```
|
||
related:github.com
|
||
related:stackoverflow.com
|
||
related:reddit.com
|
||
```
|
||
|
||
#### 实现建议
|
||
```typescript
|
||
// 仅为Google和Bing实现
|
||
// 百度适配器不实现此功能
|
||
```
|
||
|
||
#### 典型应用场景
|
||
1. 发现竞品网站
|
||
2. 查找相似资源
|
||
3. 拓展搜索范围
|
||
4. 行业调研
|
||
|
||
---
|
||
|
||
### 14. cache: - 网页缓存 🔜
|
||
|
||
**状态**: 计划实现
|
||
**优先级**: ⭐⭐ (低优先级)
|
||
|
||
#### 功能描述
|
||
查看搜索引擎保存的网页快照。
|
||
|
||
#### 语法格式
|
||
```
|
||
cache:网址
|
||
```
|
||
|
||
#### 引擎支持
|
||
| 搜索引擎 | 支持状态 | 官方文档 | 验证状态 |
|
||
|---------|---------|---------|---------|
|
||
| 百度 | ✅ 支持 | - | ✅ 已验证 |
|
||
| Google | ✅ 支持 | [cache](https://support.google.com/websearch/answer/2466433) | ✅ 已验证 |
|
||
| Bing | ❌ 不支持 | - | ✅ 已验证 |
|
||
|
||
#### 使用示例
|
||
```
|
||
cache:example.com
|
||
cache:https://www.example.com/page
|
||
```
|
||
|
||
#### 实现建议
|
||
```typescript
|
||
// 仅为百度和Google实现
|
||
// Bing适配器不实现此功能
|
||
```
|
||
|
||
#### 典型应用场景
|
||
1. 访问已删除的页面
|
||
2. 查看网页历史版本
|
||
3. 绕过访问限制
|
||
4. 内容对比分析
|
||
|
||
---
|
||
|
||
## 搜索引擎兼容性矩阵
|
||
|
||
### 完整兼容性对照表
|
||
|
||
| 搜索语法 | 百度 | Google | Bing | 实现状态 | 优先级 |
|
||
|---------|------|--------|------|---------|--------|
|
||
| `site:` | ✅ | ✅ | ✅ | ✅ 已实现 | ⭐⭐⭐⭐⭐ |
|
||
| `filetype:` | ✅ | ✅ | ✅ | ✅ 已实现 | ⭐⭐⭐⭐⭐ |
|
||
| `"..."` 精确匹配 | ✅ | ✅ | ✅ | ✅ 已实现 | ⭐⭐⭐⭐⭐ |
|
||
| 日期范围 | ✅ | ✅ | ✅ | ✅ 已实现 | ⭐⭐⭐⭐ |
|
||
| `intitle:` | ✅ | ✅ | ✅ | 🔜 计划 | ⭐⭐⭐⭐⭐ |
|
||
| `inurl:` | ✅ | ✅ | ✅ | 🔜 计划 | ⭐⭐⭐⭐⭐ |
|
||
| `-` 排除 | ✅ | ✅ | ✅ | 🔜 计划 | ⭐⭐⭐⭐⭐ |
|
||
| `OR` 逻辑或 | ✅ | ✅ | ✅ | 🔜 计划 | ⭐⭐⭐⭐ |
|
||
| `intext:` | ✅ | ✅ | ❌ | 🔜 计划 | ⭐⭐⭐⭐ |
|
||
| `inbody:` | ❌ | ❌ | ✅ | 🔜 计划 | ⭐⭐⭐⭐ |
|
||
| `..` 数字范围 | ✅ | ✅ | ✅ | 🔜 计划 | ⭐⭐⭐⭐ |
|
||
| `*` 通配符 | ✅ | ✅ | ✅ | 🔜 计划 | ⭐⭐⭐ |
|
||
| `allintitle:` | ✅ | ✅ | ❌ | 🔜 计划 | ⭐⭐⭐ |
|
||
| `related:` | ❌ | ✅ | ✅ | 🔜 计划 | ⭐⭐⭐ |
|
||
| `cache:` | ✅ | ✅ | ❌ | 🔜 计划 | ⭐⭐ |
|
||
|
||
### 引擎特性总结
|
||
|
||
#### 百度搜索
|
||
- **支持语法数**: 11/15
|
||
- **特有优势**: 中文搜索优化、本地化支持
|
||
- **不支持**: `related:`, `inbody:`
|
||
- **实现注意**: 日期格式为 `..YYYY-MM-DD` 或 `YYYY-MM-DD..`
|
||
|
||
#### Google搜索
|
||
- **支持语法数**: 13/15
|
||
- **特有优势**: 语法最全面、国际化最好
|
||
- **不支持**: `inbody:` (使用 `intext:` 替代)
|
||
- **实现注意**: 日期格式为 `after:` 和 `before:`
|
||
|
||
#### Bing搜索
|
||
- **支持语法数**: 10/15
|
||
- **特有优势**: 与Microsoft生态集成
|
||
- **不支持**: `allintitle:`, `cache:`, `intext:` (使用 `inbody:` 替代)
|
||
- **实现注意**: 日期格式支持 `daterange:` 或 `after:/before:`
|
||
|
||
---
|
||
|
||
## 使用示例
|
||
|
||
### 基础组合示例
|
||
|
||
#### 示例 1: 在指定网站搜索PDF文档
|
||
```
|
||
搜索关键词: React教程
|
||
网站: github.com
|
||
文件类型: pdf
|
||
|
||
生成查询:
|
||
- 百度: React教程 site:github.com filetype:pdf
|
||
- Google: React教程 site:github.com filetype:pdf
|
||
- Bing: React教程 site:github.com filetype:pdf
|
||
```
|
||
|
||
#### 示例 2: 精确匹配 + 排除关键词
|
||
```
|
||
精确匹配: "JavaScript基础"
|
||
关键词: 教程
|
||
排除: 培训, 广告
|
||
|
||
生成查询:
|
||
- 百度: "JavaScript基础" 教程 -培训 -广告
|
||
- Google: "JavaScript基础" 教程 -培训 -广告
|
||
- Bing: "JavaScript基础" 教程 -培训 -广告
|
||
```
|
||
|
||
#### 示例 3: 标题搜索 + 日期范围
|
||
```
|
||
标题关键词: API文档
|
||
日期范围: 2024-01-01 到 2024-12-31
|
||
|
||
生成查询:
|
||
- 百度: intitle:API文档 2024-01-01..2024-12-31
|
||
- Google: intitle:API文档 after:2024-01-01 before:2024-12-31
|
||
- Bing: intitle:API文档 after:2024-01-01 before:2024-12-31
|
||
```
|
||
|
||
### 高级组合示例
|
||
|
||
#### 示例 4: 多语法复杂组合
|
||
```
|
||
关键词: Python
|
||
精确匹配: "机器学习入门"
|
||
网站: github.com
|
||
文件类型: pdf
|
||
标题关键词: tutorial
|
||
排除: tensorflow, pytorch
|
||
|
||
生成查询:
|
||
- 百度: "机器学习入门" Python site:github.com filetype:pdf intitle:tutorial -tensorflow -pytorch
|
||
- Google: "机器学习入门" Python site:github.com filetype:pdf intitle:tutorial -tensorflow -pytorch
|
||
- Bing: "机器学习入门" Python site:github.com filetype:pdf intitle:tutorial -tensorflow -pytorch
|
||
```
|
||
|
||
#### 示例 5: OR逻辑 + 价格区间
|
||
```
|
||
关键词: 手机
|
||
OR关键词: iPhone, 三星, 华为
|
||
数字范围: 2000-5000
|
||
|
||
生成查询:
|
||
- 百度: 手机 (iPhone OR 三星 OR 华为) 2000..5000
|
||
- Google: 手机 (iPhone OR 三星 OR 华为) 2000..5000
|
||
- Bing: 手机 (iPhone OR 三星 OR 华为) 2000..5000
|
||
```
|
||
|
||
---
|
||
|
||
## 最佳实践
|
||
|
||
### 语法使用原则
|
||
|
||
#### 1. 简单优先原则
|
||
- ✅ 优先使用基础语法组合
|
||
- ✅ 避免过度复杂的查询
|
||
- ❌ 不要一次使用超过4个语法
|
||
|
||
#### 2. 引擎适配原则
|
||
- ✅ 根据目标引擎选择支持的语法
|
||
- ✅ 为不同引擎提供降级方案
|
||
- ✅ 显示语法兼容性提示
|
||
|
||
#### 3. 用户友好原则
|
||
- ✅ 提供实时预览
|
||
- ✅ 智能验证输入
|
||
- ✅ 给出优化建议
|
||
|
||
### 性能优化建议
|
||
|
||
#### 1. 查询构建优化
|
||
```typescript
|
||
// ✅ 推荐: 按优先级组织语法
|
||
private buildSearchQuery(params: SearchParams): string {
|
||
let query = params.keyword.trim()
|
||
|
||
// 1. 精确匹配 (最高优先级)
|
||
if (params.exactMatch) {
|
||
query = `"${params.exactMatch}" ${query}`
|
||
}
|
||
|
||
// 2. 限定性语法 (site, filetype)
|
||
if (params.site) query += ` site:${params.site}`
|
||
if (params.fileType) query += ` filetype:${params.fileType}`
|
||
|
||
// 3. 范围性语法 (日期, 数字)
|
||
if (params.dateRange) query += ` ${this.buildDateFilter(params.dateRange)}`
|
||
|
||
// 4. 辅助性语法 (intitle, inurl)
|
||
if (params.inTitle) query += ` intitle:${params.inTitle}`
|
||
|
||
return query
|
||
}
|
||
```
|
||
|
||
#### 2. 验证优化
|
||
```typescript
|
||
// ✅ 推荐: 早期验证,减少无效查询
|
||
validateParams(params: SearchParams): ValidationResult {
|
||
// 基础验证
|
||
if (!params.keyword && !params.exactMatch) {
|
||
return { isValid: false, errors: ['请输入搜索关键词'] }
|
||
}
|
||
|
||
// 语法数量检查
|
||
const syntaxCount = this.countActiveSyntax(params)
|
||
if (syntaxCount > 4) {
|
||
return {
|
||
isValid: true,
|
||
warnings: ['搜索条件过多,可能导致结果过少']
|
||
}
|
||
}
|
||
|
||
return { isValid: true, errors: [], warnings: [] }
|
||
}
|
||
```
|
||
|
||
### 错误处理
|
||
|
||
#### 1. 语法不兼容处理
|
||
```typescript
|
||
// 示例: Bing不支持allintitle,需要降级
|
||
if (params.allInTitle && this.engine === 'bing') {
|
||
// 降级为多个intitle
|
||
const keywords = params.allInTitle.split(' ')
|
||
keywords.forEach(keyword => {
|
||
query += ` intitle:${keyword}`
|
||
})
|
||
}
|
||
```
|
||
|
||
#### 2. 输入验证
|
||
```typescript
|
||
// 域名验证
|
||
private isValidDomain(domain: string): boolean {
|
||
const domainRegex = /^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
|
||
return domainRegex.test(domain)
|
||
}
|
||
|
||
// 日期验证
|
||
private isValidDate(dateStr: string): boolean {
|
||
const date = new Date(dateStr)
|
||
return date instanceof Date && !isNaN(date.getTime())
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 技术实现参考
|
||
|
||
### 类型定义扩展
|
||
|
||
```typescript
|
||
// src/types/index.ts
|
||
|
||
// 扩展 SyntaxType
|
||
export type SyntaxType =
|
||
// 已实现
|
||
| 'site'
|
||
| 'filetype'
|
||
| 'exact'
|
||
| 'date_range'
|
||
// 计划实现
|
||
| 'intitle'
|
||
| 'inurl'
|
||
| 'exclude'
|
||
| 'or'
|
||
| 'intext'
|
||
| 'number_range'
|
||
| 'wildcard'
|
||
| 'allintitle'
|
||
| 'related'
|
||
| 'cache';
|
||
|
||
// 扩展 SearchParams
|
||
export interface SearchParams {
|
||
keyword: string;
|
||
engine: SearchEngine;
|
||
|
||
// 已实现的字段
|
||
site?: string;
|
||
fileType?: string;
|
||
exactMatch?: string;
|
||
dateRange?: {
|
||
from: string;
|
||
to: string;
|
||
};
|
||
|
||
// 新增字段
|
||
inTitle?: string;
|
||
inUrl?: string;
|
||
excludeWords?: string[];
|
||
orKeywords?: string[];
|
||
inText?: string;
|
||
numberRange?: {
|
||
min: number;
|
||
max: number;
|
||
};
|
||
wildcardQuery?: string;
|
||
allInTitle?: string;
|
||
relatedSite?: string;
|
||
cacheSite?: string;
|
||
}
|
||
```
|
||
|
||
### 适配器接口扩展
|
||
|
||
```typescript
|
||
// src/services/adapters/index.ts
|
||
|
||
export interface SearchEngineAdapter {
|
||
// 基础方法
|
||
buildQuery(params: SearchParams): string;
|
||
validateSyntax(syntax: SyntaxType): boolean;
|
||
getSupportedSyntax(): SyntaxType[];
|
||
getBaseUrl(): string;
|
||
getName(): string;
|
||
|
||
// 扩展方法
|
||
validateParams?(params: SearchParams): ValidationResult;
|
||
getSearchSuggestions?(params: SearchParams): string[];
|
||
|
||
// 新增: 语法兼容性检查
|
||
isSyntaxSupported?(syntax: SyntaxType): boolean;
|
||
|
||
// 新增: 语法降级处理
|
||
degradeSyntax?(params: SearchParams): SearchParams;
|
||
}
|
||
```
|
||
|
||
### UI组件建议
|
||
|
||
```typescript
|
||
// 新增语法输入组件示例
|
||
|
||
interface AdvancedSyntaxProps {
|
||
params: SearchParams;
|
||
onChange: (params: SearchParams) => void;
|
||
engine: SearchEngine;
|
||
}
|
||
|
||
export function AdvancedSyntax({ params, onChange, engine }: AdvancedSyntaxProps) {
|
||
return (
|
||
<div className="advanced-syntax">
|
||
{/* 标题搜索 */}
|
||
<div className="syntax-group">
|
||
<label>标题包含</label>
|
||
<input
|
||
type="text"
|
||
value={params.inTitle || ''}
|
||
onChange={(e) => onChange({ ...params, inTitle: e.target.value })}
|
||
placeholder="intitle:关键词"
|
||
/>
|
||
</div>
|
||
|
||
{/* URL搜索 */}
|
||
<div className="syntax-group">
|
||
<label>URL包含</label>
|
||
<input
|
||
type="text"
|
||
value={params.inUrl || ''}
|
||
onChange={(e) => onChange({ ...params, inUrl: e.target.value })}
|
||
placeholder="inurl:关键词"
|
||
/>
|
||
</div>
|
||
|
||
{/* 排除关键词 */}
|
||
<div className="syntax-group">
|
||
<label>排除关键词</label>
|
||
<TagInput
|
||
tags={params.excludeWords || []}
|
||
onChange={(tags) => onChange({ ...params, excludeWords: tags })}
|
||
placeholder="-关键词"
|
||
/>
|
||
</div>
|
||
|
||
{/* OR逻辑 */}
|
||
<div className="syntax-group">
|
||
<label>任一关键词 (OR)</label>
|
||
<TagInput
|
||
tags={params.orKeywords || []}
|
||
onChange={(tags) => onChange({ ...params, orKeywords: tags })}
|
||
placeholder="关键词1 OR 关键词2"
|
||
/>
|
||
</div>
|
||
</div>
|
||
)
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 参考资源
|
||
|
||
### 官方文档
|
||
|
||
#### 百度搜索
|
||
- [百度搜索帮助中心](https://www.baidu.com/search/help.html)
|
||
- [百度高级搜索](https://www.baidu.com/gaoji/advanced.html)
|
||
|
||
#### Google搜索
|
||
- [Google搜索操作符](https://support.google.com/websearch/answer/2466433)
|
||
- [Google高级搜索](https://www.google.com/advanced_search)
|
||
- [Search operators you can use with Google](https://support.google.com/websearch/answer/2466433)
|
||
|
||
#### Bing搜索
|
||
- [Bing搜索帮助](https://support.microsoft.com/en-us/topic/advanced-search-options-b92e25f1-0085-4271-bdf9-14aaea720930)
|
||
- [Bing高级搜索操作符](https://help.bing.microsoft.com/#apex/18/en-us/10002)
|
||
|
||
### 技术参考
|
||
|
||
#### 项目文件位置
|
||
- 类型定义: `src/types/index.ts`
|
||
- 百度适配器: `src/services/adapters/baidu.ts`
|
||
- Google适配器: `src/services/adapters/google.ts`
|
||
- Bing适配器: `src/services/adapters/bing.ts`
|
||
- 适配器工厂: `src/services/adapters/factory.ts`
|
||
|
||
#### 相关测试
|
||
- 适配器测试: `tests/adapters/*.test.ts`
|
||
- 集成测试: `tests/integration/*.test.ts`
|
||
- E2E测试: `tests/e2e/*.spec.ts`
|
||
|
||
---
|
||
|
||
## 版本历史
|
||
|
||
### v1.1.0 (计划中)
|
||
- 🔜 新增 `intitle:` 标题搜索
|
||
- 🔜 新增 `inurl:` URL搜索
|
||
- 🔜 新增 `-` 排除关键词
|
||
- 🔜 新增 `OR` 逻辑或
|
||
- 🔜 新增 `intext:/inbody:` 正文搜索
|
||
- 🔜 新增 `..` 数字范围
|
||
- 🔜 新增 `*` 通配符
|
||
|
||
### v1.0.0 (已发布 - 2025-11-06)
|
||
- ✅ 支持 `site:` 网站内搜索
|
||
- ✅ 支持 `filetype:` 文件类型搜索
|
||
- ✅ 支持 `"..."` 精确匹配
|
||
- ✅ 支持日期范围过滤
|
||
- ✅ 支持百度、Google、Bing三大搜索引擎
|
||
- ✅ 智能验证和建议系统
|
||
|
||
---
|
||
|
||
## 贡献指南
|
||
|
||
欢迎贡献新的搜索语法支持!
|
||
|
||
### 添加新语法的步骤
|
||
|
||
1. **更新类型定义** (`src/types/index.ts`)
|
||
- 添加新的 `SyntaxType`
|
||
- 扩展 `SearchParams` 接口
|
||
|
||
2. **更新适配器** (`src/services/adapters/*.ts`)
|
||
- 实现 `buildQuery` 中的新语法
|
||
- 添加到 `getSupportedSyntax` 返回值
|
||
- 实现 `validateParams` 验证逻辑
|
||
|
||
3. **添加测试**
|
||
- 单元测试: `tests/adapters/*.test.ts`
|
||
- 集成测试: `tests/integration/*.test.ts`
|
||
|
||
4. **更新UI组件**
|
||
- 添加新的输入控件
|
||
- 更新表单验证
|
||
- 添加实时预览
|
||
|
||
5. **更新文档**
|
||
- 本文档: `docs/SEARCH_SYNTAX_GUIDE.md`
|
||
- README: `README.md`
|
||
- 变更日志: `CHANGELOG.md`
|
||
|
||
---
|
||
|
||
## 许可证
|
||
|
||
本文档是 SearchSyntax Pro 项目的一部分,遵循 MIT 许可证。
|
||
|
||
---
|
||
|
||
**最后更新**: 2025-11-08
|
||
**维护者**: SearchSyntax Pro 开发团队
|
||
**联系方式**: lhlyzh@qq.com
|