xuzhiheng 5 anos atrás
pai
commit
a05b9cd237
1 arquivos alterados com 58 adições e 1 exclusões
  1. 58 1
      src/util/utiltag.go

+ 58 - 1
src/util/utiltag.go

@@ -167,7 +167,7 @@ func UtilEsFind1(tags map[string]interface{}) (error, int64) {
 				for k := range ssavekey {
 					ssavekeys = append(ssavekeys, k)
 				}
-				item["s_matchkey"] = strings.Join(ssavekeys, ",")
+				item["s_matchkey"] = GetMactchKey(maths, item)
 				item["s_matchtype"] = strings.Join(matchType, ",")
 				findwinner := strings.TrimSpace(util.ObjToString(item["winner"]))
 				if findwinner != "" {
@@ -629,3 +629,60 @@ func method3(arr []string) []string {
 	}
 	return sArr
 }
+
+func GetMactchKey(match []map[string]string, data map[string]interface{}) string {
+	keyWord := []string{}
+	for _, keys := range match {
+		types := keys["s_keymatch"]
+		key := keys["s_matchkey"]
+		if strings.Contains(types, "1") {
+			title := util.ObjToString(data["title"])
+			keyWord = KeyWordToData(types, title, key, keyWord)
+		}
+		if strings.Contains(types, "2") {
+			detail := util.ObjToString(data["detail"])
+			keyWord = KeyWordToData(types, detail, key, keyWord)
+		}
+		if strings.Contains(types, "3") {
+			purchasing := util.ObjToString(data["purchasing"])
+			keyWord = KeyWordToData(types, purchasing, key, keyWord)
+		}
+		if strings.Contains(types, "4") {
+			filetext := util.ObjToString(data["filetext"])
+			keyWord = KeyWordToData(types, filetext, key, keyWord)
+		}
+		if strings.Contains(types, "5") {
+			projectname := util.ObjToString(data["projectname"])
+			keyWord = KeyWordToData(types, projectname, key, keyWord)
+		}
+		if strings.Contains(types, "6") || strings.Contains(types, "8") {
+			buyer := util.ObjToString(data["buyer"])
+			keyWord = KeyWordToData(types, buyer, key, keyWord)
+		}
+		if strings.Contains(types, "7") || strings.Contains(types, "9") {
+			winner := util.ObjToString(data["s_winner"])
+			keyWord = KeyWordToData(types, winner, key, keyWord)
+		}
+	}
+	return strings.Join(keyWord, ",")
+}
+
+func KeyWordToData(types, item, key string, keyWord []string) []string {
+	for _, mk := range strings.Split(key, ",") {
+		if strings.Contains(mk, "&&") {
+			arr := strings.Split(mk, "&&")
+			for _, s := range arr {
+				if s != "" {
+					if strings.Contains(item, s) {
+						keyWord = append(keyWord, s)
+					}
+				}
+			}
+		} else {
+			if strings.Contains(item, mk) {
+				keyWord = append(keyWord, mk)
+			}
+		}
+	}
+	return keyWord
+}