即使某些列为零,您如何索引记录?

时间:2014-06-24 21:36:04

标签: ruby-on-rails solr sunspot sunspot-rails

我正在使用太阳黑子/ solr进行搜索。我最近发现有些记录没有被编入索引,因为列有时会有零值。

我怎么能告诉solr索引这些记录呢?

这是我的可搜索块看起来像:

  searchable do
    text :name
    text :description
    # this price_as_double can sometimes be nil
    double :price_as_decimal
    text :colors do
      colors.map(&:name)
    end
    text :store do
      unless store.nil?
        store.name
      end
    end
    string :store do
      unless store.nil?
        store.name
      end
    end
    text :items_style do
      unless items_style.nil?
        items_style.name
      end
    end
    time :created_at
    boolean :editors_pick
    string :sold_out
    double :likes
  end

2 个答案:

答案 0 :(得分:1)

对于rails,您需要在迁移中添加以下功能

def change
   add_column :product, :price, :string
   add_index :product, :price
end

您的迁移将起作用,并允许乘以空值(对于大多数数据库引擎)。

但是您对产品类的验证应如下所示。

验证:price,allow_nil:true

答案 1 :(得分:0)

当某些属性为unless时,您的nil语句阻止对象编入索引。更好的方法是做这样的事情:

searchable do
  text :name
  text :description
  # this price_as_double can sometimes be nil
  double :price_as_decimal
  text :colors do
    colors.map(&:name)
  end
  text :store do
    store.present? ? store.name : ''
  end
  string :store do
    store.present? ? store.name : ''
  end
  text :items_style do
    items_style.present? ? items_style.name : ''
  end
  time :created_at
  boolean :editors_pick
  string :sold_out
  double :likes
end

如果值为nil(或为空),则会为空字符串编制索引。