Browse Source

fix:指标库、预测指标库、图库的es搜索以需要调整为:如果搜索关键字中包含中文的情况下,那么只搜索中文字段+指标编码,如果不包含中文的情况,那么就搜索英文字段+指标编码

Roc 10 months ago
parent
commit
4830374e47
1 changed files with 75 additions and 22 deletions
  1. 75 22
      services/elastic/elastic.go

+ 75 - 22
services/elastic/elastic.go

@@ -312,9 +312,9 @@ func SearchEdbInfoData(indexName, keywordStr string, from, size, filterSource, s
 		},
 	}
 
-	mustMap = append(mustMap, map[string]interface{}{
-		"bool": shouldMap,
-	})
+	//mustMap = append(mustMap, map[string]interface{}{
+	//	"bool": shouldMap,
+	//})
 
 	return searchEdbInfoData(indexName, mustMap, mustNotMap, shouldMap, from, size)
 }
@@ -1263,34 +1263,62 @@ func SearchMyChartInfoData(indexName, keywordStr string, adminId int, noPermissi
 	}
 
 	//关键字匹配
+
+	//shouldMap := map[string]interface{}{
+	//	"should": []interface{}{
+	//		map[string]interface{}{
+	//			"match": map[string]interface{}{
+	//				"ChartName": keywordStr,
+	//				//"Frequency.keyword": "月度",
+	//			},
+	//		},
+	//		// 因为关键词被分了,所以需要用下面的语句来让他 整个词 查询,从而加重整词的权重
+	//		map[string]interface{}{
+	//			"match": map[string]interface{}{
+	//				"ChartName": map[string]interface{}{
+	//					"query":    keywordStr,
+	//					"operator": "and",
+	//				},
+	//				//"Frequency.keyword": "月度",
+	//			},
+	//		},
+	//		map[string]interface{}{
+	//			"match": map[string]interface{}{
+	//				"ChartNameEn": keywordStr,
+	//				//"Frequency.keyword": "月度",
+	//			},
+	//		},
+	//		// 因为关键词被分了,所以需要用下面的语句来让他 整个词 查询,从而加重整词的权重
+	//		map[string]interface{}{
+	//			"match": map[string]interface{}{
+	//				"ChartNameEn": map[string]interface{}{
+	//					"query":    keywordStr,
+	//					"operator": "and",
+	//				},
+	//				//"Frequency.keyword": "月度",
+	//			},
+	//		},
+	//	},
+	//}
+
+	// 默认使用中文名字字段去匹配
+	keywordNameKey := `ChartName`
+	// 如果没有中文,则使用英文名称字段去匹配
+	if !utils.ContainsChinese(keywordStr) {
+		keywordNameKey = `ChartNameEn`
+	}
 	shouldMap := map[string]interface{}{
 		"should": []interface{}{
 			map[string]interface{}{
 				"match": map[string]interface{}{
-					"ChartName": keywordStr,
-					//"Frequency.keyword": "月度",
-				},
-			},
-			// 因为关键词被分了,所以需要用下面的语句来让他 整个词 查询,从而加重整词的权重
-			map[string]interface{}{
-				"match": map[string]interface{}{
-					"ChartName": map[string]interface{}{
-						"query":    keywordStr,
-						"operator": "and",
-					},
-					//"Frequency.keyword": "月度",
-				},
-			},
-			map[string]interface{}{
-				"match": map[string]interface{}{
-					"ChartNameEn": keywordStr,
+					keywordNameKey: keywordStr,
 					//"Frequency.keyword": "月度",
 				},
 			},
 			// 因为关键词被分了,所以需要用下面的语句来让他 整个词 查询,从而加重整词的权重
 			map[string]interface{}{
 				"match": map[string]interface{}{
-					"ChartNameEn": map[string]interface{}{
+					keywordNameKey: map[string]interface{}{
 						"query":    keywordStr,
 						"operator": "and",
 					},
@@ -1299,6 +1327,7 @@ func SearchMyChartInfoData(indexName, keywordStr string, adminId int, noPermissi
 			},
 		},
 	}
+
 	mustMap = append(mustMap, map[string]interface{}{
 		"bool": shouldMap,
 	})
@@ -1554,6 +1583,29 @@ func SearchEdbInfoDataByAdminId(indexName, keywordStr string, from, size, filter
 	//})
 
 	//关键字匹配
+	//shouldMap := map[string]interface{}{
+	//	"should": []interface{}{
+	//		map[string]interface{}{
+	//			"match": map[string]interface{}{
+	//				"EdbCode": keywordStr,
+	//				//"Frequency.keyword": "月度",
+	//			},
+	//		},
+	//		map[string]interface{}{
+	//			"match": map[string]interface{}{
+	//				"EdbName": keywordStr,
+	//				//"Frequency.keyword": "月度",
+	//			},
+	//		},
+	//	},
+	//}
+
+	// 默认使用中文名字字段去匹配
+	keywordNameKey := `EdbName`
+	// 如果没有中文,则使用英文名称字段去匹配
+	if !utils.ContainsChinese(keywordStr) {
+		keywordNameKey = `EdbNameEn`
+	}
 	shouldMap := map[string]interface{}{
 		"should": []interface{}{
 			map[string]interface{}{
@@ -1564,12 +1616,13 @@ func SearchEdbInfoDataByAdminId(indexName, keywordStr string, from, size, filter
 			},
 			map[string]interface{}{
 				"match": map[string]interface{}{
-					"EdbName": keywordStr,
+					keywordNameKey: keywordStr,
 					//"Frequency.keyword": "月度",
 				},
 			},
 		},
 	}
+
 	mustMap = append(mustMap, map[string]interface{}{
 		"bool": shouldMap,
 	})