Browse Source

新增标题

rdluck 4 years ago
parent
commit
2cc20e90c1
3 changed files with 27 additions and 5 deletions
  1. 1 1
      controllers/search.go
  2. 4 2
      models/search.go
  3. 22 2
      services/elasticsearch.go

+ 1 - 1
controllers/search.go

@@ -12,7 +12,7 @@ type SearchController struct {
 // @Title 搜索接口
 // @Description 搜索接口
 // @Param   KeyWord   query   string  true       "搜索关键词"
-// @Success 200 {object} models.HomeListResp
+// @Success 200 {object} models.SearchItem
 // @router /list [get]
 func (this *SearchController) SearchList() {
 	br := new(models.BaseResponse).Init()

+ 4 - 2
models/search.go

@@ -1,6 +1,8 @@
 package models
 
 type SearchItem struct {
-	ArticleId int      `description:"文章id"`
-	Body      []string `description:"搜索结果"`
+	ArticleId   int      `description:"文章id"`
+	Body        []string `description:"搜索结果"`
+	Title       string   `description:"标题"`
+	PublishDate string   `description:"发布时间"`
 }

+ 22 - 2
services/elasticsearch.go

@@ -2,6 +2,7 @@ package services
 
 import (
 	"context"
+	"encoding/json"
 	"fmt"
 	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/utils"
@@ -150,20 +151,39 @@ func SearchByKeyWord(keyWord string, pageSize int) (result []*models.SearchItem,
 	var esIndex = "cygx_article"
 	boolquery := elastic.NewBoolQuery()
 
-	boolquery.Should(elastic.NewMatchQuery("Body", keyWord))
+	boolquery.Should(elastic.NewMatchQuery("Title", keyWord), elastic.NewMatchQuery("Body", keyWord))
+
 	highlight := elastic.NewHighlight()
-	highlight = highlight.Fields(elastic.NewHighlighterField("Body"))
+	highlight = highlight.Fields(elastic.NewHighlighterField("Title"), elastic.NewHighlighterField("Body"))
 	highlight = highlight.PreTags("<font color='red'>").PostTags("</font>")
 
 	searchByMatch, err := client.Search(esIndex).Highlight(highlight).Size(pageSize).Query(boolquery).Do(context.Background())
+
 	if err != nil {
 		return
 	}
 	if searchByMatch.Hits != nil {
 		for _, v := range searchByMatch.Hits.Hits {
+			articleJson, err := v.Source.MarshalJSON()
+			if err != nil {
+				return nil, err
+			}
+			article := new(models.CygxArticle)
+			err = json.Unmarshal(articleJson, &article)
+			if err != nil {
+				return nil, err
+			}
 			searchItem := new(models.SearchItem)
 			searchItem.ArticleId, _ = strconv.Atoi(v.Id)
 			searchItem.Body = v.Highlight["Body"]
+			var title string
+			if len(v.Highlight["Title"]) > 0 {
+				title = v.Highlight["Title"][0]
+			} else {
+				title = article.Title
+			}
+			searchItem.Title = title
+			searchItem.PublishDate = article.PublishDate
 			result = append(result, searchItem)
 		}
 	}