DOC-107 实现 Markdown/TXT 基础搜索 #12

Closed
opened 2026-05-30 19:49:15 +08:00 by wangdl · 2 comments
Owner

支持 Markdown / TXT 内容搜索。

大小写不敏感搜索,返回 block_id/line_number + snippet + match range。

非目标:不引入 Tantivy、不做跨文件搜索、不做模糊搜索。

验收标准:Markdown 能按 block 搜索、TXT 能按行搜索、空 query 不 panic、有单元测试

支持 Markdown / TXT 内容搜索。 大小写不敏感搜索,返回 block_id/line_number + snippet + match range。 非目标:不引入 Tantivy、不做跨文件搜索、不做模糊搜索。 验收标准:Markdown 能按 block 搜索、TXT 能按行搜索、空 query 不 panic、有单元测试
wangdl added this to the M1:Document Core v0.1 milestone 2026-05-30 19:49:15 +08:00
wangdl added the
priority:p0
type:implementation
area:search
labels 2026-05-30 19:49:15 +08:00
Author
Owner

完成项

search_blocks(blocks, query) — Markdown 块内搜索
search_text(content, query) — TXT 文本搜索
大小写不敏感
返回 block_id/line_number + snippet + match_start/end
空 query 安全返回空结果(不 panic)
snippet 40 字符前后上下文

支持搜索的 Block 类型

Heading / Paragraph / List / CodeBlock / Quote / Table / Image(alt)

测试

  • 8 个单元测试,54 个总计全部通过
  • 覆盖:基本搜索、大小写不敏感、无匹配、多匹配、空 query

M1 全部完成!

DOC-101 DOC-102 DOC-103 DOC-104
DOC-105 DOC-106 DOC-107 DOC-108

M1 8/8 全部完成,可进行里程碑审查。

## 完成项 ✅ search_blocks(blocks, query) — Markdown 块内搜索 ✅ search_text(content, query) — TXT 文本搜索 ✅ 大小写不敏感 ✅ 返回 block_id/line_number + snippet + match_start/end ✅ 空 query 安全返回空结果(不 panic) ✅ snippet 40 字符前后上下文 ## 支持搜索的 Block 类型 Heading / Paragraph / List / CodeBlock / Quote / Table / Image(alt) ## 测试 - 8 个单元测试,54 个总计全部通过 - 覆盖:基本搜索、大小写不敏感、无匹配、多匹配、空 query ## M1 全部完成! DOC-101 ✅ DOC-102 ✅ DOC-103 ✅ DOC-104 ✅ DOC-105 ✅ DOC-106 ✅ DOC-107 ✅ DOC-108 ✅ **M1 8/8 全部完成,可进行里程碑审查。**
Author
Owner

审查补充 (2026-06-02)

search_blockssearch_text 已通过 UDL 暴露到 FFI:

  • UDL 新增 search_markdown_blocks(sequence<DocumentBlock> blocks, string query) → sequence<SearchResult>
  • UDL 新增 search_text_content(string content, string query) → sequence<SearchResult>
  • SearchResult.match_start/match_endusize 改为 u64(FFI 兼容)
  • 新增 core_block_from_ffi 反向转换以支持 search_blocks 接收 FFI DocumentBlock

所有 54 测试通过,iOS 可通过 UniFFI 调用搜索。

## 审查补充 (2026-06-02) `search_blocks` 和 `search_text` 已通过 UDL 暴露到 FFI: - UDL 新增 `search_markdown_blocks(sequence<DocumentBlock> blocks, string query) → sequence<SearchResult>` - UDL 新增 `search_text_content(string content, string query) → sequence<SearchResult>` - `SearchResult.match_start/match_end` 从 `usize` 改为 `u64`(FFI 兼容) - 新增 `core_block_from_ffi` 反向转换以支持 search_blocks 接收 FFI DocumentBlock 所有 54 测试通过,iOS 可通过 UniFFI 调用搜索。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wangdl/zhixi-document-runtime#12
No description provided.