123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- 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
|