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

时间:2017-10-15 19:59:55

标签: sorting couchbase

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

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

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

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

2 个答案:

答案 0 :(得分:4)

排序使用指定字段的索引中的术语进行操作。因此,为了对整个值进行排序,您必须使用关键字分析器,因为它将整个字段值保持为单个术语。通过在该字段上使用关键字分析器,“视频游戏”之类的值将被编入索引为单个术语。

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

相关问题是,有时您想要搜索字段并对其进行排序,在这种情况下,您希望使用除关键字之外的分析器。为了适应这两种用例,您只需将字段索引两次,一次用于搜索,一次用于排序。要做到这一点,你只需要给他们不同的名字。类似于搜索的“类别”和用于排序的“category.sort”。

答案 1 :(得分:0)

您可以尝试在搜索请求中添加“排序”选项,以探索结果的排序依据, 例如:“sort”:[“fieldname”]用于升序和 “sort”:[“ - fieldname”]为降序。 但为此,您需要在创建索引期间启用“存储字段”/“存储动态字段”。