【问题标题】:Searchkick Order by price Or Name returns incorrect order of resultsSearchkick 按价格或名称排序返回不正确的结果顺序
【发布时间】:2018-04-02 11:14:27
【问题描述】:

我正在使用 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"}

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

【问题讨论】:

  • 您确定价格存储在订单模型中吗?应该在 LineItem 中进行跟踪。
  • 价格以产品型号为准,订单用于排序结果
  • 你使用 Spree 吗?
  • 是的,我愿意,狂欢 3.1
  • 在Spree中,订购商品的价格存储在属于Order的LineItem中:github.com/spree/spree/blob/…

标签: ruby-on-rails elasticsearch spree searchkick


【解决方案1】:

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

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

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

Source

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 2012-08-11
    • 2020-04-22
    • 1970-01-01
    相关资源
    最近更新 更多