Browse Source

提交代码。

Signed-off-by: zouap <zouap@pcl.ac.cn>
pull/1788/head
zouap 3 years ago
parent
commit
ee341e70b9
1 changed files with 65 additions and 3 deletions
  1. +65
    -3
      routers/search.go

+ 65
- 3
routers/search.go View File

@@ -98,19 +98,81 @@ func searchRepoByLabel(ctx *context.Context, Key string, Page int, PageSize int)
if SortBy == "" {
SortBy = "updated_unix.keyword"
}
PrivateTotal := ctx.QueryInt("PrivateTotal")
WebTotal := ctx.QueryInt("WebTotal")
ascending := ctx.QueryBool("Ascending")
from := (Page - 1) * PageSize
resultObj := &SearchRes{}
log.Info("WebTotal=" + fmt.Sprint(WebTotal))
log.Info("PrivateTotal=" + fmt.Sprint(PrivateTotal))
resultObj.Result = make([]map[string]interface{}, 0)

if from < PrivateTotal || from == 0 {
orderBy := models.SearchOrderByRecentUpdated
switch SortBy {
case "updated_unix.keyword":
orderBy = models.SearchOrderByRecentUpdated
case "num_stars":
orderBy = models.SearchOrderByStarsReverse
case "num_forks":
orderBy = models.SearchOrderByForksReverse
case "num_watches":
orderBy = models.SearchOrderByWatches
}
log.Info("actor is null?:" + fmt.Sprint(ctx.User == nil))
repos, count, err := models.SearchRepository(&models.SearchRepoOptions{
ListOptions: models.ListOptions{
Page: Page,
PageSize: PageSize,
},
Actor: ctx.User,
OrderBy: orderBy,
Private: true,
OnlyPrivate: true,
TopicOnly: true,
TopicName: Key,
IncludeDescription: setting.UI.SearchRepoDescription,
})
if err != nil {
ctx.JSON(200, "")
return
}
resultObj.PrivateTotal = count
if repos.Len() > 0 {
log.Info("Query private repo number is:" + fmt.Sprint(repos.Len()))
makePrivateRepo(repos, resultObj, Key)
} else {
log.Info("not found private repo,keyword=" + Key)
}
if repos.Len() >= PageSize {
resultObj.Total = int64(WebTotal)
ctx.JSON(200, resultObj)
return
}
} else {
resultObj.PrivateTotal = int64(PrivateTotal)
}

from = from - PrivateTotal
if from < 0 {
from = 0
}
Size := PageSize - len(resultObj.Result)

log.Info("query searchRepoByLabel start")
if Key != "" {
boolQ := elastic.NewBoolQuery()
topicsQuery := elastic.NewMatchQuery("topics", Key)
boolQ.Should(topicsQuery)

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())
res, err := client.Search("repository-es-index").Query(boolQ).SortBy(elastic.NewScoreSort(), elastic.NewFieldSort(SortBy).Order(ascending)).From(from).Size(Size).Highlight(queryHighlight("topics")).Do(ctx.Req.Context())
if err == nil {
searchJson, _ := json.Marshal(res)
log.Info("searchJson=" + string(searchJson))
result := makeRepoResult(res, "", false)
ctx.JSON(200, result)
esresult := makeRepoResult(res, "", false)
resultObj.Total = resultObj.PrivateTotal + esresult.Total
resultObj.Result = append(resultObj.Result, esresult.Result...)
ctx.JSON(200, esresult)
} else {
log.Info("query es error," + err.Error())
ctx.JSON(200, "")


Loading…
Cancel
Save