// Package jylabutil search package jylabutil import ( "fmt" "strings" elastic "app.yhyue.com/moapp/jybase/es" ) /**即时获取企业名称列表 name 名称 limit 取几条 */ func GetEenNameImmediate(name string, limit int) []map[string]interface{} { query := `{"query": { "bool": { "must_not":[{"term": {"winnersign": "1"}}], "should": [{ "bool": {"must": [{"multi_match": {"query": "` + name + `", "type": "phrase","fields": ["name"], "analyzer": "my_ngram"}}]} }], "minimum_should_match": 1 } }, "_source": ["name","_id"], "from": 0,"size": ` + fmt.Sprint(limit) + ` }` list := *elastic.Get("winner", "winner", query) return list } /*根据企业名称、地区、中标价获取项目列表 entname 企业名称 area 区域多值","号隔开 lower 下限单位万 upper 上限单位万 pagenum 页码 pagesize每页数量 */ func GetProjectByEntName(entname string, area string, lower, upper float64, fields string, pagenum, pagesize int, getCount bool) (int, []map[string]interface{}) { if pagenum < 1 { pagenum = 1 } mastquery := getSearchQuery(entname, area, lower, upper) var count int if getCount && pagenum == 1 { countQuery := `{"query":{"bool":{"must":[` + mastquery + `]}}}` count = int(elastic.Count("projectset", "projectset", countQuery)) } order := `CUSTOM_"sort": { "_script": { "script": "if(doc['jgtime'].size()>0){return doc['jgtime'].value}else if(doc['zbtime'].size()>0){return doc['zbtime'].value}else if(doc['lasttime'].size()>0){return doc['lasttime'].value}else{return doc['createtime'].value}", "type": "number", "order": "desc" } }` list := *elastic.GetByNgram( "projectset", "projectset", ``, mastquery, "", order, fields, (pagenum-1)*pagesize, pagesize, ) return count, list } func getSearchQuery(entname, area string, lower, upper float64) string { query := `` if entname != "" { query = `{"term":{"s_winner":"` + entname + `"}}` } if area != "" { if len(query) > 0 { query += "," } query += `{"terms":{"area":[` for k, v := range strings.Split(area, ",") { if k > 0 { query += `,` } query += `"` + v + `"` } query += `]}}` } if lower > 0 && upper > 0 { if len(query) > 0 { query += "," } query += `{"range":{"bidamount":{"gte":` + fmt.Sprint(lower*10000) + `,"lte":` + fmt.Sprint(upper*10000) + `}}}` } else { if lower > 0 { if len(query) > 0 { query += "," } query += `{"range":{"bidamount":{"gte":` + fmt.Sprint(lower*10000) + `}}}` } if upper > 0 { if len(query) > 0 { query += "," } query += `{"range":{"bidamount":{"lte":` + fmt.Sprint(upper*10000) + `}}}` } } return query }