search.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. //EsMultiMatchFunctionScoreQuery
  64. //EsMatchFunctionScoreQuery
  65. result, total, err := services.EsMultiMatchFunctionScoreQuery(indexName, keyWord, startSize, pageSize) //services.EsMatchFunctionScoreQuery(indexName, keyWord, startSize, pageSize) //services.EsMatchQuery(indexName, keyWord)
  66. //result, err := services.EsMatchQuery(indexName, keyWord)//services.EsMatchQuery(indexName, keyWord)
  67. //indexName := "article_list"
  68. //result, err := services.EsMatchPhraseQuery(indexName, keyWord)
  69. if err != nil {
  70. br.Msg = "检索失败"
  71. br.ErrMsg = "检索失败,Err:" + err.Error()
  72. return
  73. }
  74. if len(result) == 0 {
  75. result = make([]*models.SearchItem, 0)
  76. }
  77. {
  78. keyWordItem := new(models.CygxSearchKeyWord)
  79. keyWordItem.UserId = user.UserId
  80. keyWordItem.KeyWord = keyWord
  81. keyWordItem.CreateTime = time.Now()
  82. go models.AddSearchKeyWord(keyWordItem)
  83. }
  84. resp := new(models.SearchResp)
  85. page := paging.GetPaging(currentIndex, pageSize, int(total))
  86. resp.Paging = page
  87. resp.List = result
  88. br.Ret = 200
  89. br.Success = true
  90. br.Msg = "获取成功"
  91. br.Data = resp
  92. }
  93. //https://blog.csdn.net/my_miuye/article/details/110496025
  94. //search