我正在使用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
),看看是否可以解决此问题。