package search import ( "strings" ) // GenericWords 通用词列表(降低权重避免匹配所有文件) var GenericWords = []string{ "问题", "故障", "报错", "异常", "无法", "不能", "怎么", "如何", "为什么", "是什么", "哪里", "什么", "可以", "需要", "应该", "是否", "有没有", } // IsGenericWord 判断是否为通用词 func IsGenericWord(word string) bool { word = strings.ToLower(word) for _, g := range GenericWords { if word == g { return true } } return false } // ScoreType 评分类型 type ScoreType int const ( ScoreNormal ScoreType = iota // 普通词 ScoreExpanded // 扩展词 ScoreSymptom // 症状词 ) // ScoreTable 评分表 var ScoreTable = map[ScoreType]map[string]int{ ScoreNormal: { "path": 2, "title": 3, "tag": 2, "content": 1, }, ScoreExpanded: { "path": 40, "title": 30, "tag": 20, "content": 5, }, ScoreSymptom: { "path": 60, "title": 50, "tag": 35, "content": 15, }, } // CalcScore 计算单个关键词在某个位置的得分 func CalcScore(keyword string, position string, scoreType ScoreType) int { base := ScoreTable[scoreType][position] if base == 0 { return 0 } if IsGenericWord(keyword) { return base / 10 // 通用词降权 } return base }