首页 > 解决方案 > Couchbase 排序选项

问题描述

我正在使用带有 Gin 框架的 Go (1.10.3)。我正在连接到 Couchbase 数据库 (5.1.1),但在对数据进行排序时遇到了一些问题。

所以这是我现在正在使用的代码,

 //Build Search Sort
 func searchSort(c *gin.Context) (cbft.SearchSortField, *cbft.SearchSortScore, string) {
    mapData := getQuery(c)
    sortData := mapData["sort"]

    var sortType string
    var sortScore *cbft.SearchSortScore
    var sortOps *cbft.SearchSortField

    if sortData == "amount:asc" {
      fmt.Println( sortData )

      sortType = "asc"
      sortScore = cbft.NewSearchSortScore().Descending(false)
      sortOps = cbft.NewSearchSortField("AmountBase").Descending(false)
    }

   if sortData == "amount:desc" {
      fmt.Println( sortData )

      sortType = "desc"
      sortScore = cbft.NewSearchSortScore().Descending(true)
      sortOps = cbft.NewSearchSortField("AmountBase").Descending(true)

   }
   return sortOps, sortScore
}

我像这样加载到查询中,

 sortOpsOne, sortOpsTwo := searchSort(c)

 ftSearch := gocb.NewSearchQuery("Search", searchOps).Sort(sortOpsOne).Sort(sortOpsTwo).Limit(size).Skip(from)

解释一下,上面加载了一个获取字符串请求,例如sort=amount:asc按我拥有的 AmountBase 字段对 JSON 回复进行排序。

但是,这似乎根本不起作用,我从字段开始,sortOps但我添加了sortScore字段,因为排序字段没有做任何事情。

添加descending(false) / descending(true)到排序字段的末尾似乎也没有做任何事情。

搜索正在基于我已加载到存储桶中的数据在 FTS 索引上运行。

我不确定我做错了什么?

它似乎不适用于降序选项,升序查询似乎正在工作。:)

标签: gocouchbasego-gin

解决方案


推荐阅读