|
@@ -52,6 +52,7 @@ type SieveCondition struct {
|
|
|
Industry []string `json:"industry"` //行业
|
|
|
Keyword []KeyWord `json:"keywords"` //关键词
|
|
|
Buyer []string `json:"buyer"` //招标单位(采购单位)
|
|
|
+ Agency []string `json:"agency"` //招标代理机构(采购单位)
|
|
|
Buyerclass []string `json:"buyerclass"` //采购单位类型
|
|
|
HasBuyerTel string `json:"hasBuyertel"` //是否有采购单位电话
|
|
|
Winner []string `json:"winner"` //中标单位
|
|
@@ -110,6 +111,23 @@ func DetailANDTitle(findfields string) bool {
|
|
|
return strings.Contains(findfields, "detail") && strings.Contains(findfields, "title")
|
|
|
}
|
|
|
|
|
|
+var getMatchPhraseSql = func(field string, val ...string) (sql string) {
|
|
|
+ if len(val) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var arr []string
|
|
|
+ for _, s := range val {
|
|
|
+ if s == "" {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ arr = append(arr, fmt.Sprintf(`{"match_phrase": {"%s": "%s"}}`, field, s))
|
|
|
+ }
|
|
|
+ if len(arr) == 0 {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ return fmt.Sprintf(`{"bool": {"should": [%s],"minimum_should_match": 1}}`, strings.Join(arr, ","))
|
|
|
+}
|
|
|
+
|
|
|
// 获取数据导出查询语句
|
|
|
func getDataExportSql(scd *SieveCondition) string {
|
|
|
if len(scd.SelectIds) > 0 {
|
|
@@ -241,14 +259,25 @@ func getDataExportSql(scd *SieveCondition) string {
|
|
|
if len(scd.Industry) > 0 {
|
|
|
musts = append(musts, fmt.Sprintf(query_bool_must, "s_subscopeclass", `"`+strings.Join(scd.Industry, `","`)+`"`))
|
|
|
}
|
|
|
- if len(scd.Buyer) > 0 {
|
|
|
- musts = append(musts, fmt.Sprintf(query_bool_must, "buyer", `"`+strings.Join(scd.Buyer, `","`)+`"`))
|
|
|
- }
|
|
|
if len(scd.Buyerclass) > 0 {
|
|
|
musts = append(musts, fmt.Sprintf(query_bool_must, "buyerclass", `"`+strings.Join(scd.Buyerclass, `","`)+`"`))
|
|
|
}
|
|
|
+ //P492招标采购搜索匹配采购单位等优化 新增buyer、agency、winner模糊搜索,数据导出同步改为模糊
|
|
|
+ //query_bool_should := `{"bool":{"should":[%s],"minimum_should_match": 1}}`
|
|
|
+ if len(scd.Buyer) > 0 {
|
|
|
+ if sql := getMatchPhraseSql("buyer.mbuyer", scd.Buyer...); sql != "" {
|
|
|
+ musts = append(musts, sql)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(scd.Agency) > 0 {
|
|
|
+ if sql := getMatchPhraseSql("agency.magency", scd.Buyer...); sql != "" {
|
|
|
+ musts = append(musts, sql)
|
|
|
+ }
|
|
|
+ }
|
|
|
if len(scd.Winner) > 0 {
|
|
|
- musts = append(musts, fmt.Sprintf(query_bool_must, "s_winner", `"`+strings.Join(scd.Winner, `","`)+`"`))
|
|
|
+ if sql := getMatchPhraseSql("s_winner.mwinner", scd.Buyer...); sql != "" {
|
|
|
+ musts = append(musts, sql)
|
|
|
+ }
|
|
|
}
|
|
|
_minPrice := ""
|
|
|
_maxPrice := ""
|
|
@@ -495,6 +524,7 @@ func GetSqlObjFromId(mongo mg.MongodbSim, _id string) *SieveCondition {
|
|
|
SelectType: qutil.ObjToString((*query)["selectType"]),
|
|
|
PublishTime: qutil.ObjToString((*query)["publishtime"]),
|
|
|
Buyer: getStringArrFromDbResult((*query)["buyer"]),
|
|
|
+ Agency: getStringArrFromDbResult((*query)["agency"]),
|
|
|
Buyerclass: getStringArrFromDbResult((*query)["buyerclass"]),
|
|
|
HasBuyerTel: qutil.ObjToString((*query)["hasBuyertel"]),
|
|
|
Winner: getStringArrFromDbResult((*query)["winner"]),
|