search.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package controllers
  2. import (
  3. "fmt"
  4. "hongze/hongze_cygx/models"
  5. "hongze/hongze_cygx/services"
  6. "hongze/hongze_cygx/utils"
  7. "rdluck_tools/paging"
  8. "time"
  9. )
  10. type SearchController struct {
  11. BaseAuthController
  12. }
  13. // @Title 搜索接口
  14. // @Description 搜索接口
  15. // @Param PageSize query int true "每页数据条数"
  16. // @Param CurrentIndex query int true "当前页页码,从1开始"
  17. // @Param KeyWord query string true "搜索关键词"
  18. // @Success 200 {object} models.SearchItem
  19. // @router /list [get]
  20. func (this *SearchController) SearchList() {
  21. br := new(models.BaseResponse).Init()
  22. defer func() {
  23. this.Data["json"] = br
  24. this.ServeJSON()
  25. }()
  26. pageSize, _ := this.GetInt("PageSize")
  27. currentIndex, _ := this.GetInt("CurrentIndex")
  28. var startSize int
  29. if pageSize <= 0 {
  30. pageSize = utils.PageSize20
  31. }
  32. if currentIndex <= 0 {
  33. currentIndex = 1
  34. }
  35. startSize = paging.StartIndex(currentIndex, pageSize)
  36. fmt.Println(startSize)
  37. keyWord := this.GetString("KeyWord")
  38. if keyWord == "" {
  39. br.Msg = "请输入搜索词"
  40. br.ErrMsg = "请输入搜索词"
  41. return
  42. }
  43. user := this.User
  44. if user == nil {
  45. br.Msg = "请重新登录"
  46. br.Ret = 408
  47. return
  48. }
  49. /*
  50. categoryList, err := models.GetCategoryByCompanyId(user.CompanyId)
  51. if err != nil {
  52. br.Msg = "检索失败!"
  53. br.ErrMsg = "检索分类信息失败,Err:" + err.Error()
  54. return
  55. }
  56. var categoryNameArr []string
  57. for _, v := range categoryList {
  58. categoryNameArr = append(categoryNameArr, v.CategoryName)
  59. }
  60. categoryName := strings.Join(categoryNameArr, ",")
  61. */
  62. //indexName := "article_list"
  63. indexName := utils.IndexName
  64. pageSize = 20
  65. result, total, err := services.EsMultiMatchFunctionScoreQuery(indexName, keyWord, startSize, pageSize,user.UserId) //services.EsMatchFunctionScoreQuery(indexName, keyWord, startSize, pageSize) //services.EsMatchQuery(indexName, keyWord)
  66. //result, total, err := services.SearchByKeyWordBack(indexName, keyWord, startSize, pageSize,user.UserId)
  67. //result, total, err := services.EsMultiMatchFunctionScoreQueryFix(indexName, keyWord, startSize, pageSize)
  68. if err != nil {
  69. br.Msg = "检索失败"
  70. br.ErrMsg = "检索失败,Err:" + err.Error()
  71. return
  72. }
  73. if len(result) == 0 {
  74. result = make([]*models.SearchItem, 0)
  75. }
  76. {
  77. keyWordItem := new(models.CygxSearchKeyWord)
  78. keyWordItem.UserId = user.UserId
  79. keyWordItem.KeyWord = keyWord
  80. keyWordItem.CreateTime = time.Now()
  81. go models.AddSearchKeyWord(keyWordItem)
  82. }
  83. resp := new(models.SearchResp)
  84. page := paging.GetPaging(currentIndex, pageSize, int(total))
  85. resp.Paging = page
  86. resp.List = result
  87. br.Ret = 200
  88. br.Success = true
  89. br.Msg = "获取成功"
  90. br.Data = resp
  91. }
  92. //https://blog.csdn.net/my_miuye/article/details/110496025
  93. //search