DHT Search Web
基于 Bun Vue 3 TypeScript Vite Tailwind CSS 和 shadcn-vue 的本地搜索界面
开发
先在仓库根目录启动后端服务
$env:LIBCLANG_PATH = "D:\tools\dht\.tools\libclang\clang\native"
cargo run -p dht-search --bin dht-search -- --config config.toml
然后打开另一个终端启动前端开发服务
cd src/web
bun install
bun run dev
打开 http://127.0.0.1:5173
Vite 会将搜索详情状态诊断和配置接口代理到 http://127.0.0.1:8080 可以通过 DHT_API_TARGET 环境变量覆盖目标
检查和构建
bun run check
生产静态资源输出到 src/web/dist
生产运行
在启动 Rust 服务前构建一次 Web 资源
cd src/web
bun install --frozen-lockfile
bun run build
cd ../..
cargo run --release -p dht-search --bin dht-search -- --config config.toml
打开 http://127.0.0.1:8080
Axum 根据配置中的 http.web_dir 提供静态资源和单页回退 不需要单独运行 Vite
已实现功能
- 关键词 文件名片段和精确 infohash 搜索
- 根据输入语法自动识别普通关键词 通配符和名称文件路径正则搜索
- 相关度 时间 热度 大小和发现次数排序
- 有上限的结果分页和 URL 查询恢复
- 基于 reka-ui 的搜索结果数字分页和浏览器持久化每页数量选择
- 文件列表 热度 可用性和收录时间详情
- 基于 reka-ui 的数字分页文件列表和浏览器持久化每页数量选择
- 相同内容的不同 infohash 变体展示
- 磁力链接打开和复制
- 在系统诊断页统一展示 DHT 采集 索引 持久化和验证运行状态
- 使用右上角图标即时启停 DHT 持续采集并持久化离线模式
- 仅在系统诊断页打开时每秒刷新服务状态
- 独立展示进程 RocksDB Tantivy DHT 和队列诊断数据
- 使用懒加载 ECharts 展示内存存储压力 Metadata 吞吐以及 HTTP 请求错误趋势
- 使用设置与过滤两个精简页签管理常用配置 Metadata 单位换算和按行通配符
- 搜索诊断配置使用互不冲突的单页路由
- 加载 空结果 接口错误 重试和移动端适配
添加组件
当前 shadcn-vue registry 与最新版 CLI 的样式列表暂时不一致 项目使用已验证的 CLI 版本
bunx shadcn-vue@2.4.3 add button -y