|
@@ -152,9 +152,23 @@ func SaveData() {
|
|
|
}
|
|
|
|
|
|
func SearchByKeyWord(keyWord,categoryName string, pageSize int) (result []*models.SearchItem, err error) {
|
|
|
- if pageSize == 0 {
|
|
|
- pageSize = 20
|
|
|
+ fmt.Println("get start keyWordArr")
|
|
|
+ keyWordArr, err := GetIndustryMapNameSlice(keyWord)
|
|
|
+ if err != nil {
|
|
|
+ go utils.SendEmail(utils.APPNAME+" "+utils.RunMode+"异常提醒:", "GetIndustryMapNameSlice:"+err.Error(), utils.EmailSendToUsers)
|
|
|
+ }
|
|
|
+
|
|
|
+ for k, v := range keyWordArr {
|
|
|
+ fmt.Println(k, v)
|
|
|
+ go func() {
|
|
|
+ esSearch(v,"")
|
|
|
+ }()
|
|
|
}
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func esSearch(keyWord,categoryName string)(result []*models.SearchItem, err error) {
|
|
|
+ pageSize:=20
|
|
|
var sniff = false //<4>
|
|
|
cfg := &config.Config{
|
|
|
URL: ES_URL,
|
|
@@ -172,64 +186,43 @@ func SearchByKeyWord(keyWord,categoryName string, pageSize int) (result []*model
|
|
|
termsQuery:=elastic.NewTermsQuery("category_name",categoryName)
|
|
|
|
|
|
boolquery := elastic.NewBoolQuery()
|
|
|
+ boolquery.Must(elastic.NewMatchQuery("Title", keyWord), elastic.NewMatchQuery("BodyText", keyWord))
|
|
|
+ highlight := elastic.NewHighlight()
|
|
|
+ highlight = highlight.Fields(elastic.NewHighlighterField("Title"), elastic.NewHighlighterField("BodyText"))
|
|
|
+ highlight = highlight.PreTags("<font color='red'>").PostTags("</font>")
|
|
|
+ searchByMatch, err := client.Search(esIndex).Highlight(highlight).Size(pageSize).Query(termsQuery).Query(boolquery).Do(context.Background())
|
|
|
|
|
|
- fmt.Println("get start keyWordArr")
|
|
|
- keyWordArr, err := GetIndustryMapNameSlice(keyWord)
|
|
|
if err != nil {
|
|
|
- go utils.SendEmail(utils.APPNAME+" "+utils.RunMode+"异常提醒:", "GetIndustryMapNameSlice:"+err.Error(), utils.EmailSendToUsers)
|
|
|
+ return result, err
|
|
|
}
|
|
|
- keyWordArr = append(keyWordArr, keyWord)
|
|
|
- fmt.Println(keyWord)
|
|
|
- fmt.Println(keyWordArr)
|
|
|
- var newKeyWordArr []string
|
|
|
- if len(keyWordArr) > 2 {
|
|
|
- newKeyWordArr = append(keyWordArr[2:], keyWordArr[0:2]...)
|
|
|
- }
|
|
|
- fmt.Println(newKeyWordArr)
|
|
|
- fmt.Println("get end keyWordArr")
|
|
|
searchMap := make(map[int]int)
|
|
|
- for k, v := range newKeyWordArr {
|
|
|
- fmt.Println(k, v)
|
|
|
-
|
|
|
- boolquery.Must(elastic.NewMatchQuery("Title", keyWord), elastic.NewMatchQuery("BodyText", keyWord))
|
|
|
-
|
|
|
- highlight := elastic.NewHighlight()
|
|
|
- highlight = highlight.Fields(elastic.NewHighlighterField("Title"), elastic.NewHighlighterField("BodyText"))
|
|
|
- highlight = highlight.PreTags("<font color='red'>").PostTags("</font>")
|
|
|
-
|
|
|
- searchByMatch, err := client.Search(esIndex).Highlight(highlight).Size(pageSize).Query(termsQuery).Query(boolquery).Do(context.Background())
|
|
|
-
|
|
|
- if err != nil {
|
|
|
- return result, err
|
|
|
- }
|
|
|
- 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
|
|
|
- }
|
|
|
- if _, ok := searchMap[article.ArticleId]; !ok {
|
|
|
- searchItem := new(models.SearchItem)
|
|
|
- searchItem.ArticleId, _ = strconv.Atoi(v.Id)
|
|
|
- searchItem.Body = v.Highlight["BodyText"]
|
|
|
- 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)
|
|
|
- searchMap[article.ArticleId] = article.ArticleId
|
|
|
+ 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
|
|
|
+ }
|
|
|
+ if _, ok := searchMap[article.ArticleId]; !ok {
|
|
|
+ searchItem := new(models.SearchItem)
|
|
|
+ searchItem.ArticleId, _ = strconv.Atoi(v.Id)
|
|
|
+ searchItem.Body = v.Highlight["BodyText"]
|
|
|
+ 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)
|
|
|
+ searchMap[article.ArticleId] = article.ArticleId
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return
|
|
|
-}
|
|
|
+}
|