我正在使用searchkick在我的rails应用程序上搜索和订购产品,除了一切正常之外,

search("*", order: { price: {order: :desc}}
// or
search("*", order: { price: :desc})
// name
search("*", order: { name: {order: :desc}}
//or
search("*", order: { name: :desc})

以上两个均返回正确的结果,但顺序不正确

我的价格和名称映射是
"name"=>
      {"type"=>"keyword",
       "fields"=>{"analyzed"=>{"type"=>"text", "analyzer"=>"searchkick_index"}, "word_start"=>{"type"=>"text", "analyzer"=>"searchkick_word_start_index"}},
       "ignore_above"=>30000},
     "price"=>{"type"=>"float"}

我该如何解决这个问题,以便获得正确的结果顺序?即按价格描述?

最佳答案

您可以尝试调试发生了什么:

Model.search("*", order: {price: :desc}, debug: true)


Model.search("*", order: {price: :desc}, explain: true).response

Source

一种可能是您的搜索索引与数据库不同步。尝试进行完整的重新索引(Model.reindex),看看是否可以解决此问题。

07-24 09:49
查看更多