测试代码选项!
type TagRule struct {
TagName string // 最终显示的标签,例如 "Optimized"
Keywords []string // 触发词,例如 ["三网优化", "9929", "4837", "cmin2"]
}
// 模拟主机圈的规则库
var Rules = []TagRule{
{"Virtualization", []string{"kvm", "openvz", "lxc", "vmware"}},
{"Route", []string{"cn2", "gia", "9929", "bgp", "anycast"}},
{"Security", []string{"ddos", "cc", "waf", "防火墙", "清洗"}}, // 结合你的安全背景
{"Price", []string{"年付", "月付", "溢价", "传家宝", "aff"}},
}
func MatchTags(content string) []string {
content = strings.ToLower(content) // 归一化处理
var matched []string
// 这里可以用简单的遍历,也可以上 AC 自动机优化性能
for _, rule := range Rules {
for _, k := range rule.Keywords {
if strings.Contains(content, k) {
matched = append(matched, rule.TagName)
break // 命中一个关键词就给该规则的 Tag,防止重复
}
}
}
return matched
}
> 2

