Răsfoiți Sursa

消费行业报告展示bug

xingzai 3 ani în urmă
părinte
comite
f3d6ef22e1
4 a modificat fișierele cu 94 adăugiri și 6 ștergeri
  1. 2 1
      controllers/search.go
  2. 1 0
      models/report_mapping.go
  3. 88 2
      services/elastic.go
  4. 3 3
      services/tactics.go

+ 2 - 1
controllers/search.go

@@ -67,7 +67,8 @@ func (this *SearchController) SearchList() {
 	//indexName := "article_list"
 	indexName := utils.IndexName
 	pageSize = 20
-	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.EsMultiMatchFunctionScoreQueryTime(indexName, keyWord, startSize, pageSize, user.UserId)
+	//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)
 	if err != nil {

+ 1 - 0
models/report_mapping.go

@@ -78,6 +78,7 @@ func GetTradeAll(uid, ChartPermissionId int) (items []*TradeReportMapping, err e
 	WHERE
 	re.chart_permission_id = ?
 	AND re.report_type = 1
+	AND re.chart_permission_id != 21
 	ORDER BY art.publish_date DESC
 	LIMIT 0,1`
 	_, err = o.Raw(sql, uid, ChartPermissionId).QueryRows(&items)

+ 88 - 2
services/elastic.go

@@ -461,8 +461,8 @@ func EsMultiMatchFunctionScoreQuery(indexName, keyWord string, startSize, pageSi
 						}
 						searchItem.Title = title
 						searchItem.PublishDate = article.PublishDate
-						for _,v_result := range result{
-							if v_result.ArticleId == searchItem.ArticleId{
+						for _, v_result := range result {
+							if v_result.ArticleId == searchItem.ArticleId {
 								isAppend = true
 							}
 						}
@@ -643,3 +643,89 @@ func GetArrSum(intArr []int) (sum int) {
 //	fmt.Println(keyWordArr)
 //	fmt.Println("end")
 //}
+
+func EsMultiMatchFunctionScoreQueryTime(indexName, keyWord string, startSize, pageSize, userId int) (result []*models.SearchItem, total int64, err error) {
+	client, err := NewClient()
+	keyWordArr, err := GetIndustryMapNameSliceV3(keyWord)
+	keyWordArr = RemoveDuplicatesAndEmpty(keyWordArr)
+	//artidArr := make([]elastic.Query, 0)
+	//matchArr := make([]elastic.Query, 0)
+	n := 0
+	keyWordLen := len(keyWordArr)
+	if keyWordLen <= 0 {
+		keyWordArr = append(keyWordArr, keyWord)
+		keyWordLen = len(keyWordArr)
+	}
+	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()
+
+			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>")
+			request := client.Search(indexName).Highlight(highlight).Sort("PublishDate", false).From(startSize).Size(pageSize).Query(boolquery)
+			searchByMatch, err := request.Do(context.Background())
+			if err != nil {
+				return nil, 0, err
+			}
+			if searchByMatch != nil {
+				if searchByMatch.Hits != nil {
+					for _, v := range searchByMatch.Hits.Hits {
+						var isAppend bool
+						articleJson, err := v.Source.MarshalJSON()
+						if err != nil {
+							return nil, 0, err
+						}
+						article := new(models.CygxArticle)
+						err = json.Unmarshal(articleJson, &article)
+						if err != nil {
+							return nil, 0, err
+						}
+						searchItem := new(models.SearchItem)
+						searchItem.ArticleId, _ = strconv.Atoi(v.Id)
+						if len(v.Highlight["BodyText"]) > 0 {
+							searchItem.Body = v.Highlight["BodyText"]
+						} else {
+							bodyRune := []rune(article.BodyText)
+							bodyRuneLen := len(bodyRune)
+							if bodyRuneLen > 100 {
+								bodyRuneLen = 100
+							}
+							body := string(bodyRune[:bodyRuneLen])
+							searchItem.Body = []string{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
+						for _, v_result := range result {
+							if v_result.ArticleId == searchItem.ArticleId {
+								isAppend = true
+							}
+						}
+						if !isAppend {
+							result = append(result, searchItem)
+						}
+					}
+				}
+				//total += searchByMatch.Hits.TotalHits.Value
+			}
+		}
+		n++
+	}
+	total = int64(len(result))
+	return
+}

+ 3 - 3
services/tactics.go

@@ -291,9 +291,9 @@ func SyncTacticsListAddreport() (err error) {
 	}()
 	fmt.Println("同步数据")
 	indexName := utils.IndexName
-	endDate := time.Now().AddDate(0, 0, -30).Format(utils.FormatDate)
-	list, err := models.GetTacticsList2(endDate)
-	//list, err := models.GetTacticsListAll2()
+	//endDate := time.Now().AddDate(0, 0, -30).Format(utils.FormatDate)
+	//list, err := models.GetTacticsList2(endDate)
+	list, err := models.GetTacticsListAll2()
 	if err != nil {
 		fmt.Println("GetTacticsList Err:", err.Error())
 		return