Browse Source

时间查询

xingzai 3 years ago
parent
commit
6fde2ca90c
2 changed files with 22 additions and 6 deletions
  1. 7 1
      controllers/search.go
  2. 15 5
      services/elastic.go

+ 7 - 1
controllers/search.go

@@ -18,6 +18,7 @@ type SearchController struct {
 // @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() {
@@ -39,6 +40,7 @@ func (this *SearchController) SearchList() {
 
 	fmt.Println(startSize)
 	keyWord := this.GetString("KeyWord")
+	orderColumn := this.GetString("OrderColumn")
 	if keyWord == "" {
 		br.Msg = "请输入搜索词"
 		br.ErrMsg = "请输入搜索词"
@@ -50,6 +52,10 @@ func (this *SearchController) SearchList() {
 		br.Ret = 408
 		return
 	}
+
+	if orderColumn == "" {
+		orderColumn = "Comprehensive"
+	}
 	/*
 		categoryList, err := models.GetCategoryByCompanyId(user.CompanyId)
 		if err != nil {
@@ -67,7 +73,7 @@ func (this *SearchController) SearchList() {
 	//indexName := "article_list"
 	indexName := utils.IndexName
 	pageSize = 20
-	result, total, err := services.EsMultiMatchFunctionScoreQueryTime(indexName, keyWord, startSize, pageSize, user.UserId)
+	result, total, err := services.EsMultiMatchFunctionScoreQueryTime(indexName, keyWord, startSize, pageSize, user.UserId, orderColumn)
 	//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)

+ 15 - 5
services/elastic.go

@@ -644,7 +644,7 @@ func GetArrSum(intArr []int) (sum int) {
 //	fmt.Println("end")
 //}
 
-func EsMultiMatchFunctionScoreQueryTime(indexName, keyWord string, startSize, pageSize, userId int) (result []*models.SearchItem, total int64, err error) {
+func EsMultiMatchFunctionScoreQueryTime(indexName, keyWord string, startSize, pageSize, userId int, orderColumn string) (result []*models.SearchItem, total int64, err error) {
 	client, err := NewClient()
 	keyWordArr, err := GetIndustryMapNameSliceV3(keyWord)
 	keyWordArr = RemoveDuplicatesAndEmpty(keyWordArr)
@@ -656,23 +656,33 @@ func EsMultiMatchFunctionScoreQueryTime(indexName, keyWord string, startSize, pa
 		keyWordArr = append(keyWordArr, keyWord)
 		keyWordLen = len(keyWordArr)
 	}
+
+	// @Param   OrderColumn   query   int  true       "排序字段 ,Comprehensive综合 ,Matching匹配度 ,PublishDate 发布时间 "
 	utils.FileLog.Info("SearchKeyWord:%s, userId:%s", keyWordArr, strconv.Itoa(userId))
 	//keyWordWeight := GetWeight(keyWordLen)
 	for _, v := range keyWordArr {
 		if v != "" {
 			matchArr := make([]elastic.Query, 0)
 			boolquery := elastic.NewBoolQuery()
-			//scoreSort := elastic.NewScoreSort()
-			multiMatch := elastic.NewMultiMatchQuery(v, "Title", "BodyText").Analyzer("ik_smart")
 			bodyFunctionQuery := elastic.NewFunctionScoreQuery()
+			if orderColumn == "PublishDate" {
+				multiMatch := elastic.NewMultiMatchQuery(v, "Title", "BodyText")
+				bodyFunctionQuery.Query(multiMatch)
+			} else {
+				multiMatch := elastic.NewMultiMatchQuery(v, "Title", "BodyText").Analyzer("ik_smart")
+				bodyFunctionQuery.Query(multiMatch)
+			}
 
-			bodyFunctionQuery.Query(multiMatch)
 			matchArr = append(matchArr, bodyFunctionQuery)
 			boolquery.Should(matchArr...)
 			highlight := elastic.NewHighlight()
-			highlight = highlight.Fields(elastic.NewHighlighterField("Title"), elastic.NewHighlighterField("BodyText"))
 			highlight = highlight.PreTags("<font color='red'>").PostTags("</font>")
+			highlight = highlight.Fields(elastic.NewHighlighterField("Title"), elastic.NewHighlighterField("BodyText"))
+
 			request := client.Search(indexName).Highlight(highlight).Sort("PublishDate", false).From(startSize).Size(pageSize).Query(boolquery)
+			if orderColumn == "Matching" {
+				request = client.Search(indexName).Highlight(highlight).From(startSize).Size(pageSize).Query(boolquery)
+			}
 			searchByMatch, err := request.Do(context.Background())
 			if err != nil {
 				return nil, 0, err