Browse Source

优化搜索

rdluck 4 years ago
parent
commit
82409c2138
1 changed files with 35 additions and 16 deletions
  1. 35 16
      services/elasticsearch.go

+ 35 - 16
services/elasticsearch.go

@@ -147,7 +147,7 @@ func SaveData() {
 	fmt.Println("end")
 }
 
-func SearchByKeyWordBack(keyWord string) (result []*models.SearchItem, err error) {
+func SearchByKeyWord(keyWord string) (result []*models.SearchItem, err error) {
 	pageSize := 20
 	keyWordArr, err := GetIndustryMapNameSlice(keyWord)
 	if err != nil {
@@ -168,24 +168,43 @@ func SearchByKeyWordBack(keyWord string) (result []*models.SearchItem, err error
 	var esIndex = "cygx_article"
 
 	searchMap := make(map[int]int)
-	boolquery := elastic.NewBoolQuery()
-	matchQueryList := make([]elastic.Query, len(keyWordArr))
-	keyWordLen := len(keyWordArr)
-	n := keyWordLen
-	for _, v := range keyWordArr {
-		keyWord = v
-		boost := float64(n)
-		matchQueryList = append(matchQueryList, elastic.NewMatchQuery("Title", keyWord).Boost(boost+0.2))
-		matchQueryList = append(matchQueryList, elastic.NewMatchQuery("BodyText", keyWord).Boost(boost+0.1))
-		n--
-	}
-	//boolquery.Must(elastic.NewMatchQuery("Title", keyWord), elastic.NewMatchQuery("BodyText", keyWord))
-	boolquery.Must(matchQueryList...)
+	//boolquery := elastic.NewBoolQuery()
+	//keyWordLen := len(keyWordArr)
+	//n := keyWordLen
+	//for _, v := range keyWordArr {
+	//	keyWord = v
+	//	boost := float64(n)
+	//	fmt.Println("keyWord:", keyWord)
+	//	fmt.Println("boost:", boost)
+	//	//matchQueryList = append(matchQueryList, elastic.NewMatchQuery("Title", keyWord).Boost(boost+0.2))
+	//	//matchQueryList = append(matchQueryList, elastic.NewMatchQuery("BodyText", keyWord).Boost(boost+0.1))
+	//	q1 := elastic.NewMatchQuery("Title", keyWord)
+	//	q1 = q1.Boost(boost + 0.2)
+	//	q2 := elastic.NewMatchQuery("BodyText", keyWord)
+	//	q2 = q2.Boost(boost + 0.1)
+	//	boolquery.Should(q1, q2)
+	//	n--
+	//}
+	keyWordStr := strings.Join(keyWordArr, ",")
+	queryString := elastic.NewQueryStringQuery(`Title:(` + keyWordStr + `) BodyText:(`+keyWordStr+`)`)
 
+	boolqueryJson, err := json.Marshal(queryString)
+	fmt.Println("err:", err)
+	fmt.Println("queryString ", string(boolqueryJson))
+
+	//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(boolquery).Do(context.Background())
+	request := client.Search(esIndex).Highlight(highlight).Size(pageSize).Query(queryString)
+
+	requestJson, err := json.Marshal(request)
+	fmt.Println("err:", err)
+	fmt.Println("requestJson ", string(requestJson))
+
+	searchByMatch, err := request.Do(context.Background())
+
+	//searchByMatch, err := client.Search(esIndex).Highlight(highlight).Size(pageSize).Do(context.Background())
 	if err != nil {
 		return result, err
 	}
@@ -220,7 +239,7 @@ func SearchByKeyWordBack(keyWord string) (result []*models.SearchItem, err error
 	return
 }
 
-func SearchByKeyWord(keyWord string) (result []*models.SearchItem, err error) {
+func SearchByKeyWordBack(keyWord string) (result []*models.SearchItem, err error) {
 	pageSize := 20
 	keyWordArr, err := GetIndustryMapNameSlice(keyWord)
 	if err != nil {