我一直在尝试将地理空间搜索集成到我的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,重新安装并重新启动,但仍然收到错误。有任何想法吗?非常感谢你!
答案 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
),然后从下拉列表中选择并点击更改:
答案 2 :(得分:0)
还要确保从solr目录加载schema.xml,而不是从默认的gem目录加载。