From 657383658a5fbe94f6cd0f17b147bcef1e598b90 Mon Sep 17 00:00:00 2001 From: zouap Date: Fri, 25 Feb 2022 10:23:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- public/home/search.js | 8 +++++--- routers/search.go | 21 ++++++++++++++++----- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/public/home/search.js b/public/home/search.js index 2321803db..6a96512e0 100644 --- a/public/home/search.js +++ b/public/home/search.js @@ -72,7 +72,7 @@ function search(){ } } -function doSearch(tableName,keyword,page,pageSize=15,onlyReturnNum=true,sortBy){ +function doSearch(tableName,keyword,page,pageSize=15,onlyReturnNum=true,sortBy,OnlySearchLabel=false){ $.ajax({ type:"GET", url:"/all/dosearch/", @@ -87,7 +87,8 @@ function doSearch(tableName,keyword,page,pageSize=15,onlyReturnNum=true,sortBy){ 'Page': page, 'PageSize': pageSize, 'OnlyReturnNum':onlyReturnNum, - 'SortBy':sortBy + 'SortBy':sortBy, + 'OnlySearchLabel':OnlySearchLabel }, async:true, success:function(json){ @@ -405,7 +406,8 @@ function displayRepoResult(page,jsonResult,onlyReturnNum,keyword){ html += "
"; if(!isEmpty(recordMap["topics"]) && recordMap["topics"] !="null"){ for(var j = 0; j < recordMap["topics"].length;j++){ - html +="
"+ recordMap["topics"][j] + "
"; + //function doSearch(tableName,keyword,page,pageSize=15,onlyReturnNum=true,sortBy){ + html +="
"+ recordMap["topics"][j] + "
"; } } html +="
"; diff --git a/routers/search.go b/routers/search.go index 1d7a5b183..4a2e727df 100644 --- a/routers/search.go +++ b/routers/search.go @@ -44,6 +44,7 @@ func SearchApi(ctx *context.Context) { Page := ctx.QueryInt("Page") PageSize := ctx.QueryInt("PageSize") OnlyReturnNum := ctx.QueryBool("OnlyReturnNum") + OnlySearchLabel := ctx.QueryBool("OnlySearchLabel") if Page <= 0 { Page = 1 } @@ -52,7 +53,11 @@ func SearchApi(ctx *context.Context) { } if TableName == "repository" { - searchRepo(ctx, "repository-es-index", Key, Page, PageSize, OnlyReturnNum) + if OnlySearchLabel { + searchRepoByLabel(ctx, Key, Page, PageSize) + } else { + searchRepo(ctx, "repository-es-index", Key, Page, PageSize, OnlyReturnNum) + } return } else if TableName == "issue" { searchIssue(ctx, "issue-es-index", Key, Page, PageSize, OnlyReturnNum) @@ -72,7 +77,7 @@ func SearchApi(ctx *context.Context) { } } -func searchRepoByLabel(ctx *context.Context, TableName string, Key string, Page int, PageSize int, OnlyReturnNum bool) { +func searchRepoByLabel(ctx *context.Context, Key string, Page int, PageSize int) { /* 项目, ES名称: repository-es-index 搜索: @@ -95,13 +100,16 @@ func searchRepoByLabel(ctx *context.Context, TableName string, Key string, Page boolQ := elastic.NewBoolQuery() topicsQuery := elastic.NewMatchQuery("topics", Key) boolQ.Should(topicsQuery) - res, err := client.Search(TableName).Query(boolQ).Sort(SortBy, ascending).From((Page - 1) * PageSize).Size(PageSize).Do(ctx.Req.Context()) + + res, err := client.Search("repository-es-index").Query(boolQ).SortBy(elastic.NewScoreSort(), elastic.NewFieldSort(SortBy).Order(ascending)).From((Page - 1) * PageSize).Size(PageSize).Highlight(queryHighlight("topics")).Do(ctx.Req.Context()) if err == nil { - result := makeRepoResult(res, "", OnlyReturnNum) + searchJson, _ := json.Marshal(res) + log.Info("searchJson=" + string(searchJson)) + result := makeRepoResult(res, "", false) ctx.JSON(200, result) - return } else { log.Info("query es error," + err.Error()) + ctx.JSON(200, "") } } ctx.JSON(200, "") @@ -182,6 +190,9 @@ func makeRepoResult(sRes *elastic.SearchResult, Key string, OnlyReturnNum bool) } else { record["description"] = "" } + if Key == "" { + record["hightTopics"] = getLabelValue("topics", recordSource, hit.Highlight) + } record["num_watches"] = recordSource["num_watches"] record["num_stars"] = recordSource["num_stars"]