package controllers import ( "fmt" "hongze/hongze_cygx/models" "hongze/hongze_cygx/services" "hongze/hongze_cygx/utils" "rdluck_tools/paging" "time" ) type SearchController struct { BaseAuthController } // @Title 搜索接口 // @Description 搜索接口 // @Param PageSize query int true "每页数据条数" // @Param CurrentIndex query int true "当前页页码,从1开始" // @Param KeyWord query string true "搜索关键词" // @Param OrderColumn query int true "排序字段 ,Comprehensive综合 ,Matching匹配度 ,PublishDate 发布时间 " // @Success 200 {object} models.SearchItem // @router /list [get] func (this *SearchController) SearchList() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) fmt.Println(startSize) keyWord := this.GetString("KeyWord") orderColumn := this.GetString("OrderColumn") if keyWord == "" { br.Msg = "请输入搜索词" br.ErrMsg = "请输入搜索词" return } user := this.User if user == nil { br.Msg = "请重新登录" br.Ret = 408 return } if orderColumn == "" { orderColumn = "Matching" } /* categoryList, err := models.GetCategoryByCompanyId(user.CompanyId) if err != nil { br.Msg = "检索失败!" br.ErrMsg = "检索分类信息失败,Err:" + err.Error() return } var categoryNameArr []string for _, v := range categoryList { categoryNameArr = append(categoryNameArr, v.CategoryName) } categoryName := strings.Join(categoryNameArr, ",") */ //indexName := "article_list" indexName := utils.IndexName pageSize = 20 var result []*models.SearchItem var total int64 var err error if orderColumn == "PublishDate" { tmpResult, tmpTotal, tmpErr := services.EsMultiMatchFunctionScoreQueryTimeSort(indexName, keyWord, startSize, 100, user.UserId) result = tmpResult total = tmpTotal err = tmpErr } else { tmpResult, tmpTotal, tmpErr := services.EsMultiMatchFunctionScoreQuerySort(indexName, keyWord, startSize, pageSize, user.UserId, orderColumn) //tmpResult, tmpTotal, tmpErr := services.EsMultiMatchFunctionScoreQuery(indexName, keyWord, startSize, pageSize, user.UserId) result = tmpResult total = tmpTotal err = tmpErr } //result, total, err := services.EsMultiMatchFunctionScoreQuery(indexName, keyWord, startSize, pageSize, user.UserId) //services.EsMatchFunctionScoreQuery(indexName, keyWord, startSize, pageSize) //services.EsMatchQuery(indexName, keyWord) //result, total, err := services.SearchByKeyWordBack(indexName, keyWord, startSize, pageSize,user.UserId) //result, total, err := services.EsMultiMatchFunctionScoreQueryFix(indexName, keyWord, startSize, pageSize) if err != nil { br.Msg = "检索失败" br.ErrMsg = "检索失败,Err:" + err.Error() return } if len(result) == 0 { result = make([]*models.SearchItem, 0) } detail, errKey := models.GetNewSearchKeyWordByThisUser(user.UserId, keyWord) if errKey != nil && errKey.Error() != utils.ErrNoRow() { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + errKey.Error() return } //同一个用户一分钟之内搜索的词不重复记录 if detail == nil || time.Now().After(detail.CreateTime.Add(+time.Minute*1)) { //fmt.Println("一分钟之内没有搜索") keyWordItem := new(models.CygxSearchKeyWord) keyWordItem.UserId = user.UserId keyWordItem.KeyWord = keyWord keyWordItem.CreateTime = time.Now() go models.AddSearchKeyWord(keyWordItem) } resp := new(models.SearchResp) page := paging.GetPaging(currentIndex, pageSize, int(total)) resp.Paging = page resp.List = result br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = resp } //https://blog.csdn.net/my_miuye/article/details/110496025 //search