太阳黑子地理空间搜索错误:未知字段'location_ll'

时间:2012-06-06 06:39:41

标签: ruby-on-rails ruby-on-rails-3 geospatial sunspot

我一直在尝试将地理空间搜索集成到我的rails应用程序中几天,但是当我运行rake sunspot时仍然会出现此错误:solr:reindex

RSolr::Error::Http - 400 Bad Request
Error: ERROR:unknown field 'location_ll'

Request Data: "<?xml version=\"1.0\" encoding=\"UTF-8\"?><add><doc><field name=\"id\">Place 1</field><field   name=\"type\">Place</field><field name=\"type\">ActiveRecord::Base</field><field name=\"class_name\">Place</field><field name=\"location_ll\">42.348065,-71.083623</field></doc> #etc... keeps going on for all the objects/fields being indexed in the table

据我所知,当我在模型中注释掉latlon(:location)行时,我正在做正确的事情,因为搜索和索引工作正常,但不知道它是否是一个bug或者我是否遗漏了一些东西。以下是我目前正在使用的设置:

rails 3.2.1 红宝石1.9.2p318

宝石 太阳黑子(2.0.0.pre.120417) sunspot_rails(2.0.0.pre.120417) sunspot_solr(2.0.0.pre.120417)

:纬度和经度都是浮动格式

放置模型

searchable do
text :name
latlon(:location) { Sunspot::Util::Coordinates.new(self.latitude, self.longitude) }
end

我尝试过Sunspot :: Util :: Coordinates.new中的变体,包括(lat,lon)和(纬度,经度)

我看了https://github.com/sunspot/sunspot/issues/203并根据建议,停止了我的太阳黑子服务器,删除了solr文件夹,删除了sunspot.yml,重新安装并重新启动,但仍然收到错误。有任何想法吗?非常感谢你!

3 个答案:

答案 0 :(得分:2)

确保solr文件夹中的schema.xml与此处的最新版本匹配:

https://github.com/sunspot/sunspot/blob/master/sunspot_solr/solr/solr/conf/schema.xml

仍然没有在我的localhost上工作,但它正在制作

答案 1 :(得分:2)

如果您正在使用websolr,则需要确保将索引类型设置为适用于Ruby on Rails的Sunspot 2.0(Solr 3) 。我的默认为 Sunspot 1.3.x for Ruby on Rails ,这导致了unknown field 'location_ll'错误。

我正在使用Heroku插件,为此你可以通过运行来设置索引类型

$ heroku addons:open websolr 

然后点击您的索引(可能是default),然后从下拉列表中选择并点击更改:

enter image description here

答案 2 :(得分:0)

还要确保从solr目录加载schema.xml,而不是从默认的gem目录加载。