2013-05-08 49 views
0

我是使用太阳黑子宝石的新手。我已经安装并正确索引和查询。不过,我现在试图通过包含地理搜索来限制搜索参数。我的SOLR索引数据库表有纬度和经度字段,但我无法使用地理搜索工作。太阳黑子Solr Rails地球未能通过未定义的方法错误

这是我在我的模型:

searchable do 
    . 
    . 
    . 
    double :latitude, :as => "lat" 
    double :longitude, :as => "lon" 
    location (:location) { Sunspot::Util::Coordinates.new(lat, lon) } 
    end 

然而,当我运行rake任务,以重新编制它失败,出现以下:

undefined method `lat' for #<Product:0x1076e6650> 

我也试过:

latlon(:location){ Sunspot::Util::Coordinates.new(lat, lon) } 

and

location(:location){ Sunspot::Util::Coordinates.new(:latitude, :longitude) } 

我已经尝试了各种不同的选项,如传递:纬度和经度,而不是经纬度,但我似乎每次都遇到不同的错误。

我已经安装了以下的宝石: 太阳黑子(2.0.0,1.3.3,1.2.1) sunspot_rails(1.3.3,1.2.1) sunspot_solr(2.0.0)

任何建议将不胜感激!提前致谢。

+0

我意识到我需要更新到sunspot_rails 2.0.0和太阳黑子2.0.0,但也没有解决问题。 – nn2013 2013-05-08 16:35:36

回答

0

我想通了。这是正确的方法来做到这一点:

searchable do 
. 
. 
. 
double :latitude 
double :longitude 
location (:location) { Sunspot::Util::Coordinates.new(latitude, longitude) } 
end