| | |
| | | "可以", "需要", "应该", "是否", "有没有", |
| | | } |
| | | |
| | | // EntityWords 实体词列表(进一步降低权重,因为这些词会匹配大量文件) |
| | | var EntityWords = []string{ |
| | | "智能枪", "电子秤", "智能阀", "艾信盒子", |
| | | "电子秤平台", "运营管理平台", "易配送", "lpg", |
| | | "安全用气", "艾信助手", "艾信发货", |
| | | } |
| | | |
| | | // IsGenericWord 判断是否为通用词 |
| | | func IsGenericWord(word string) bool { |
| | | word = strings.ToLower(word) |
| | | for _, g := range GenericWords { |
| | | if word == g { |
| | | return true |
| | | } |
| | | } |
| | | return false |
| | | } |
| | | |
| | | // IsEntityWord 判断是否为实体词 |
| | | func IsEntityWord(word string) bool { |
| | | wordLower := strings.ToLower(word) |
| | | for _, e := range EntityWords { |
| | | if wordLower == strings.ToLower(e) { |
| | | return true |
| | | } |
| | | } |
| | |
| | | if base == 0 { |
| | | return 0 |
| | | } |
| | | // 实体词降权(匹配太多文件),但保证至少 1 分 |
| | | if IsEntityWord(keyword) { |
| | | score := base / 5 |
| | | if score < 1 { |
| | | score = 1 |
| | | } |
| | | return score |
| | | } |
| | | // 通用词降权,但保证至少 1 分 |
| | | if IsGenericWord(keyword) { |
| | | return base / 10 // 通用词降权 |
| | | score := base / 3 |
| | | if score < 1 { |
| | | score = 1 |
| | | } |
| | | return score |
| | | } |
| | | return base |
| | | } |