3

我正在使用 sunspot/rails 版本 2。它工作得很好,但我不知道如何处理丢失的字段。如果我没有纬度和经度,此代码会将其映射到 0,0(非洲附近):

searchable do
  text      :resume, :stored => true
  text      :city, :boost => 5
  latlon(:geo) { Sunspot::Util::Coordinates.new(latitude, longitude) }
end

我尝试使用两个搜索块,每个搜索块都有不同的条件,但太阳黑子只使用第一个可搜索块。我想要发生的是丢失位置的东西仍然可以搜索,而不是按位置。

4

2 回答 2

3

是的,通常我在可选条件之后有一个 if 检查:

searchable do
  text      :resume, :stored => true
  text      :city, :boost => 5
  latlon(:geo) { Sunspot::Util::Coordinates.new(latitude, longitude) } if latitude && longitude
  # other conditions if needed
  with(:another_field, condition_var) if condition_var
end
于 2012-06-18T06:55:36.970 回答
1

我想到了一种解决方法,添加一个名为has_location或其他东西的布尔字段,然后在进行地理搜索时始终检查它。Kludgy,但它应该工作。

于 2012-06-06T22:41:38.170 回答