我在Gin Framework中使用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)
为说明起见,以上代码加载了一个get字符串请求,例如sort=amount:asc
按我拥有的AmountBase字段对JSON答复进行排序。
但是,这似乎根本不起作用,我只是从sortOps
字段开始,但是由于排序字段没有任何作用,所以我添加了sortScore
字段。
在排序字段的末尾添加descending(false) / descending(true)
似乎也不起作用。
搜索是根据我已加载到存储桶中的数据在FTS索引上进行的。
我不确定自己在做什么错吗?
似乎不能使用降序选项,因为升序查询似乎有效。 :)