2017-10-15 118 views
1

我們正在使用Couchbase 4.6.2並嘗試使用全文搜索功能。我們的嘗試是搜索,排序和分頁。如何配置Couchbase全文搜索索引以在完整屬性上排序

目前,我們使用默認索引設置對其進行了索引。

我們遇到的問題是,當FTS功能對記錄進行排序時,它會根據字段中的單個詞進行排序。根據文檔,這似乎是由於全文搜索索引的工作原理(以及在索引中選擇的分析器)。它需要每個單詞並創建一個索引。然後,當執行排序時,它會爲該字段選擇最小值或最大值並對該值進行排序。

是否有可能像現在這樣在每個單詞的基礎上將FTS索引指定爲字段,但是該排序對屬性的整個內容進行操作?

+0

FYI v5.0對您來說可能會快很多,並且剛剛上週發佈了各種錯誤修復和改進。 – 1tylermitchell

回答

4

排序使用指定字段的索引中的術語進行操作。因此,爲了對整個值進行排序,您必須使用關鍵字分析器,因爲它將整個字段值保留爲單個項。通過在該字段上使用關鍵字分析器,像「視頻遊戲」這樣的值將作爲一個單詞進行索引。

然後,如果您指定該字段進行排序,它將按整個值排序。另外,與其他答案相反,排序按索引值運行,並且不需要存儲值。

一個相關的問題是,有時候您想要在該字段上進行搜索並對其進行排序,在這種情況下,您希望使用除關鍵字以外的分析器。爲了適應這兩種用例,您只需將該字段索引兩次,一次用於搜索,一次用於排序。要做到這一點,你只需要給他們不同的名字。像'category'用於搜索和'category.sort'用於排序。

0

您可以嘗試在您的搜索請求中添加「排序」選項,以探索結果的排序方式,例如:「sort」:[「fieldname」]用於升序,並且 「sort」:[「-fieldname 「]爲降序。 但是爲此,您需要在索引創建期間啓用「存儲字段」/「存儲動態字段」。