适配版本:HarmonyOS 5.0.0 或以上
阅读目标:掌握如何为分布式文档系统添加全文检索、高亮显示与段落定位功能,支持关键词索引体系构建,提升长文协作中的效率与结构清晰度
🧠 一、目标功能模块
功能点 | 说明 |
---|---|
全文搜索 | 支持输入关键词 → 文档段落匹配并返回 |
高亮跳转 | 点击搜索结果 → 自动定位到对应段落 + 高亮 |
分段关键词索引构建机制 | 每段提取关键词,生成结构索引用于目录或辅助导航 |
搜索响应多设备同步 | TV、平板等设备同步跳转至搜索目标段落 |
📦 二、搜索索引结构设计
interface ParagraphIndex {
paragraphId: string
keywords: string[]
content: string
}
📌 可使用 doc_index_${docId}
存储整篇段落索引数组(定期更新)
📝 三、索引生成逻辑(写入或定期扫描)
function generateDocIndex(docId: string) {
const paragraphs = fetchParagraphsForDoc(docId)
const indexList = paragraphs.map(p => ({
paragraphId: p.id,
content: p.content,
keywords: extractKeywords(p.content)
}))
kvStore.put(`doc_index_${docId}`, JSON.stringify(indexList))
}
extractKeywords
可使用简单分词/TF-IDF/自定义停用词过滤
🔍 四、搜索关键词匹配逻辑
function searchKeyword(keyword: string): ParagraphIndex[] {
const indexList = getKV(`doc_index_${docId}`)
return indexList.filter(item =>
item.keywords.includes(keyword) || item.content.includes(keyword)
)
}
📌 返回匹配段落数组,用于 UI 展示 + 跳转导航
🖍️ 五、高亮显示实现
function highlightText(content: string, keyword: string): string {
return content.replaceAll(keyword, `<span style="background:yellow">${keyword}</span>`)
}
ArkTS 渲染时可通过
RichText()
组件或自定义 Canvas 实现高亮
🎯 六、搜索结果跳转功能(定位段落)
function scrollToParagraph(paragraphId: string) {
const el = getElementById(paragraphId)
el?.scrollIntoView({ animated: true })
}
📌 若当前在 TV 等端展示,也应同步触发远程滚动定位
🔁 七、搜索词跨设备跳转同步
手机搜索后广播定位目标:
kvStore.put('doc_search_target', {
paragraphId: matched.id,
keyword: inputValue
})
TV 端响应跳转:
kvStore.on('dataChange', ..., (entry) => {
if (entry.key === 'doc_search_target') {
const { paragraphId } = JSON.parse(entry.value.value)
scrollToParagraph(paragraphId)
}
})
📚 八、构建结构化关键词索引(辅助目录)
function buildKeywordMap(indexList: ParagraphIndex[]): Record<string, string[]> {
const map: Record<string, string[]> = {}
indexList.forEach(item => {
item.keywords.forEach(kw => {
if (!map[kw]) map[kw] = []
map[kw].push(item.paragraphId)
})
})
return map
}
📌 用于生成“文档结构关键词目录”组件,支持跳转+筛选功能
✅ 九、小结
模块功能 | 实现说明 |
---|---|
全文检索系统 | 通过段落内容 + 关键词索引实现快速匹配 |
高亮显示与跳转定位 | 关键词标记突出、点击后可视区域自动跳转至段落 |
跨设备同步跳转 | 手机搜索 → TV/Pad 同步滚动展示 |
索引构建机制支持导航目录 | 基于关键词映射构建文档目录树,提升结构感和定位效率 |