如何配置 Couchbase 全文搜索索引以按完整 属性 排序

How do I configure Couchbase full text search index to sort on full property

我们正在使用 Couchbase 4.6.2 并尝试使用全文搜索功能。我们的尝试是搜索、排序和分页。

目前,我们使用默认索引设置对其进行索引。

我们 运行 遇到的问题是,当 FTS 功能对记录进行排序时,它会根据字段中的单个词进行排序。根据文档,这似乎是因为全文搜索索引的工作方式(以及在索引中选择的分析器)。它获取每个单词并为其创建索引。然后在执行排序时,它会为该字段选择最小值或最大值并根据该值进行排序。

是否可以让 FTS 像现在一样在每个单词的基础上对字段进行索引,但对 属性 的全部内容进行排序?

您可以尝试在搜索请求中添加 "sort" 选项来探索结果的排序情况, 例如: "sort" : ["fieldname"] 用于升序和 "sort": ["-fieldname"] 为降序。 但是为此,您需要在创建索引期间启用 "store field"/"Store Dynamic Fields"。

排序使用指定字段的索引中的术语进行。因此,为了对整个值进行排序,您必须使用关键字 analyzer ,因为这会将整个字段值保留为单个术语。通过在该字段上使用关键字分析器,"Video Games" 之类的值将被索引为单个术语。

然后,如果您指定该字段进行排序,它将按整个值排序。此外,与其他答案之一相反,排序对索引值进行操作,不需要存储值。

一个相关的问题是,有时您希望在字段上进行搜索并对其进行排序,在这种情况下,您希望使用关键字以外的分析器。为了适应这两种用例,您只需为字段编制索引两次,一次用于搜索,一次用于排序。为此,您只需给它们起不同的名称。类似于 'category' 用于搜索,'category.sort' 用于排序。