123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- // 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
- }
|