|
@@ -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
|