// Package storage provides unified storage interface backed by Redis + MySQL. // This file defines the core data types used throughout the storage system. package storage // IndexEntry 是倒排索引中的单个条目。 // 一条索引记录表示"某个 URL 与某个关键词的相关性权重"。 type IndexEntry struct { Weight float32 `json:"w"` // 该 URL 在该关键词下的得分/权重 URL string `json:"u"` // 网页 URL } // SnippetEntry 是 URL 对应的摘要信息缓存。 // 包含页面标题、描述、正文片段、抓取时间戳和内容哈希(用于增量重爬检测)。 type SnippetEntry struct { Title string `json:"title"` // 网页标题 Description string `json:"desc"` // meta description 或自动生成的描述 Text string `json:"text"` // 正文前 N 字符的文本片段 Timestamp int64 `json:"ts"` // 抓取该页面时的 Unix 时间戳 ContentHash string `json:"hash"` // 正文内容的 FNV-1a 哈希(用于增量重爬判断内容是否变化) } // SiteInfo 存放每个域名/主机的元信息。 type SiteInfo struct { VisitCount int `json:"visit_count"` // 累计访问该网站的次数 LastVisitTime int64 `json:"last_visit_time"` // 上次访问该网站的时间戳 Fingerprint any `json:"fingerprint,omitempty"` // 网站指纹(用于识别重复站点) SuccessRate *float64 `json:"success_rate,omitempty"` // 访问成功率(成功次数/总访问次数) HTMLStructure string `json:"html_structure,omitempty"` // HTML 结构特征摘要 IPs []string `json:"ips,omitempty"` // 该域名解析出的 IP 列表 Quality *float64 `json:"quality,omitempty"` // 网站质量评分(0~1) HTTPSAvailable *bool `json:"https_available,omitempty"` // 是否支持 HTTPS Keywords []string `json:"keywords,omitempty"` // 该网站的高频关键词列表 OutLinks []string `json:"out_links,omitempty"` // 从该网站页面提取的出站链接列表 Languages map[string]float64 `json:"languages,omitempty"` // 网站语种分布(语种代码 → 占比) Redirects map[string]string `json:"redirects,omitempty"` // 重定向链(URL → 最终 URL) ServerTypes []string `json:"server_types,omitempty"` // 网站使用的 HTTP Server 类型列表 }