# 文件搜索

> 三种搜索模式（当前文件夹、递归搜索、Everything快速搜索）、搜索历史、模糊匹配、键盘快捷操作与 Everything 降级策略。文件太多太乱、记不清放在哪时，用搜索快速定位目标文件。

- 分类：文件管理器
- 关键词：搜索、文件搜索、Everything、递归搜索、模糊匹配、搜索历史、搜索模式、找不到文件、文件太多、文件乱
- 在线原文：https://www.xyltools.com/docs/file-search

---

## 搜索功能概览

文件管理器内置强大的文件搜索功能，支持三种搜索模式，满足从快速定位到全盘检索的不同需求。搜索框位于工具栏右侧，搜索按钮左侧的图标会指示当前搜索模式。

![文件管理器搜索模式](https://www.xyltools.com/docs/light/file-search-1.png)

| 搜索模式 | 搜索范围 | 速度 | 适用场景 |
| --- | --- | --- | --- |
| 当前文件夹 | 仅搜索当前目录下的文件和文件夹 | 极快 | 已知文件在当前目录，快速筛选定位。 |
| 递归搜索 | 搜索当前目录及所有子目录 | 中等 | 不确定文件在哪一层子目录，需要深度查找。 |
| Everything快速搜索 | 使用 Everything 引擎搜索当前路径下 | 极速 | Everything 已就绪时首选，毫秒级返回结果。 |

> **默认模式**：首次使用时默认为"当前文件夹"模式。搜索模式会自动记住，下次打开文件管理器时恢复上次选择的模式。

## 搜索按钮与模式切换

搜索框左侧的搜索按钮不仅用于触发搜索，其图标还会随当前搜索模式变化，直观显示搜索范围：

| 图标 | 搜索模式 | ToolTip 提示 |
| --- | --- | --- |
| 文件夹图标 | 当前文件夹 | 搜索模式：当前文件夹 |
| 层叠双文件夹图标 | 递归搜索 | 搜索模式：包含子文件夹 |
| 放大镜图标 | Everything快速搜索 | 搜索模式：Everything快速搜索（当前路径） |

### 切换搜索模式

1. **点击搜索按钮**：点击搜索框左侧的搜索按钮，弹出搜索模式菜单。
2. **选择搜索模式**：在弹出的菜单中点击所需的搜索模式。菜单项前方的勾选标记表示当前选中的模式。
3. **即时生效**：选择后搜索按钮图标立即更新，如果搜索框中已有内容会自动以新模式重新搜索。

> **Everything 高级菜单**：在搜索模式菜单底部还有三个 Everything 相关选项："刷新Everything索引"用于重建索引数据库，"更新Everything索引"用于增量更新，"管理网络共享索引"用于添加或移除需要索引的局域网共享文件夹。

## 搜索框与即时搜索

在搜索框中输入关键词后，系统会自动延迟一小段时间再触发搜索（防抖机制），避免每输入一个字符就搜索一次导致卡顿。防抖延迟会根据输入节奏自适应调整：

| 场景 | 延迟时间 | 说明 |
| --- | --- | --- |
| 首次输入 | 100ms | 快速响应第一个字符，几乎无感知延迟。 |
| 连续输入 | 300ms | 连续打字时适当增加延迟，等用户停顿后再搜索。 |
| Everything 模式 | 200ms | Everything 搜索本身极快，使用更短的防抖延迟。 |
| 按 Enter 键 | 立即 | 按下回车键跳过防抖，立即执行搜索。 |

> **快速搜索**：在文件列表区域直接键入字符，焦点会自动跳转到搜索框并追加输入，无需先点击搜索框。按 Escape 键可退出搜索并恢复文件列表。

## 搜索历史

当搜索框获得焦点时，下方会弹出搜索历史记录面板，显示最近使用过的搜索关键词，方便快速重复搜索。

- 点击历史记录中的关键词，立即以该关键词执行搜索。
- 搜索完成后，关键词会自动保存到历史记录中。
- 使用键盘向下方向键可将焦点从搜索框移动到历史记录列表。
- 点击搜索框右侧的关闭按钮（×）可清除当前搜索并退出搜索模式。

> **独立存储**：搜索历史按搜索类型独立存储。文件管理器的搜索历史与文件交互页面的搜索历史分别保存，互不干扰。

## 键盘快捷操作

搜索功能支持完善的键盘操作，无需鼠标即可完成搜索全流程：

| 按键 | 功能 |
| --- | --- |
| Enter | 立即执行搜索（跳过防抖延迟），并关闭历史记录弹窗。 |
| Escape | 如果历史记录弹窗已打开则关闭弹窗；否则清除搜索内容并退出搜索模式。 |
| ↓（向下方向键） | 当历史记录弹窗打开时，将焦点移动到历史记录列表的第一项。 |
| 直接输入字符 | 在文件列表区域输入字符时，焦点自动跳转到搜索框并追加输入。 |

## 模糊匹配与结果排序

搜索采用模糊匹配算法，即使输入的关键词与文件名并非完全一致也能找到目标文件。匹配规则如下：

- 快速匹配：文件名包含搜索关键词即匹配（不区分大小写）。
- 模糊评分：使用模糊匹配算法对文件名和扩展名进行多字段评分，按相关度排序。
- 搜索结果按匹配评分降序排列，最相关的文件排在最前面。
- 匹配的字符位置会在文件名中高亮显示。
- 递归搜索最多返回 500 条结果，Everything 模式最多返回 1000 条。

> **增量更新**：递归搜索模式下，结果采用增量推送方式：搜索到的文件会实时添加到列表中，无需等待全部扫描完成。结果按评分排序插入，已显示的结果可能随新结果到达而调整位置。

## Everything 降级策略

Everything 搜索模式依赖 Everything 搜索引擎。当 Everything 不可用时，系统会自动采取降级策略，确保搜索功能不中断：

| 情况 | 系统行为 |
| --- | --- |
| Everything 已就绪 | 正常使用 Everything 极速搜索。 |
| Everything 未启动 | 自动尝试启动 Everything 服务，启动成功后正常搜索。 |
| Everything 正在建立索引 | 自动回退为递归搜索，并在状态栏提示。索引完成后将自动切换回 Everything。 |
| Everything 索引更新中 | 自动回退为递归搜索，完成后自动恢复。 |
| 当前路径为未索引的网络共享 | 自动回退为递归搜索，提示可在设置中添加网络共享索引。 |
| Everything 启动失败 | 不自动回退，提示用户检查程序文件或切换为递归搜索模式。 |

> **Everything 超时**：Everything 搜索设有 10 秒超时保护。如果搜索超时，系统会停止等待并显示超时提示，建议切换为递归搜索模式。

## 网络共享搜索

在浏览局域网共享文件夹时也可以使用搜索功能。Everything 模式支持索引网络共享路径以实现极速搜索，但需要先将网络共享添加到 Everything 索引中。

### 添加网络共享索引

1. **打开管理菜单**：点击搜索按钮，在弹出菜单底部点击"管理网络共享索引"。
2. **添加共享路径**：在弹出的管理界面中添加需要索引的局域网共享文件夹路径（UNC 路径）。
3. **等待索引完成**：Everything 会自动扫描并建立索引。首次索引可能需要较长时间，取决于网络共享中的文件数量。

> **未索引的网络共享**：当使用 Everything 模式搜索未索引的网络共享路径时，系统会自动回退为递归搜索，并在状态栏提示。建议将常用网络共享添加到索引中以提高搜索速度。
