2017-10-15 43 views
1

我们正在使用Couchbase 4.6.2并尝试使用全文搜索功能。我们的尝试是搜索,排序和分页。如何配置Couchbase全文搜索索引以在完整属性上排序

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

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

是否有可能像现在这样在每个单词的基础上将FTS索引指定为字段,但是该排序对属性的整个内容进行操作?

+0

FYI v5.0对您来说可能会快很多,并且刚刚上周发布了各种错误修复和改进。 – 1tylermitchell

回答

4

排序使用指定字段的索引中的术语进行操作。因此,为了对整个值进行排序,您必须使用关键字分析器,因为它将整个字段值保留为单个项。通过在该字段上使用关键字分析器,像“视频游戏”这样的值将作为一个单词进行索引。

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

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

0

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