我正在使用太阳黑子/ 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
答案 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
(或为空),则会为空字符串编制索引。