问题:cbft仅在为Descending
选项提供true
值时才返回排序结果,由于某些原因,当给false
选项时,它不会进行排序(似乎基于updated
进行排序,但是不是我要寻找的领域。这是我的代码:
var (
qus []cbft.FtsQuery
)
...
conjunction := cbft.NewConjunctionQuery(qus...)
q := gocb.NewSearchQuery(dd.Config.TrialsSearchIndex, conjunction)
sortBy := cbft.NewSearchSortField("drug_name").Descending(true) // if false does not sort
q.Sort(sortBy)
res, err := dd.Couchbase.TrialsBucket.ExecuteSearchQuery(q)
为什么不按升序排序?
事实证明,问题在于字段的解析方式,如果您需要在文本搜索中使用相同的字段(例如,您需要解析多个单词),则Couchbase允许在字段上放置自定义分析器在这种情况下,仅按字母顺序检索,您将需要在该字段上定义一个alias并为该字段放置一个不同的分析器。在这种情况下,我将分析器设置为“单个”(即将字段解析为一个字),并过滤所有内容以使其不区分小写。基本上为字段field_sort
创建一个alias和一个custom分析器。您可以在此处阅读有关编写分析器的更多信息:https://docs.couchbase.com/server/current/fts/fts-using-analyzers.html该文档保留了所需的内容,但希望对您有所帮助。