3

几天来,我一直在尝试将地理空间搜索集成到我的 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) 行时,搜索和索引工作正常,但不知道它是错误还是我遗漏了什么。以下是我目前使用的设置:

导轨 3.2.1 红宝石 1.9.2p318

宝石 sunspot (2.0.0.pre.120417) sunspot_rails (2.0.0.pre.120417) sunspot_solr (2.0.0.pre.120417)

:latitude 和 :longitude 都是浮点格式

放置模型

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

我在 Sunspot::Util::Coordinates.new 中尝试过变体,包括 (lat, lon) 和 (latitude, longitude)

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

4

3 回答 3

2

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

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

仍然无法在我的本地主机上工作,但它正在生产中

于 2012-06-06T18:41:04.873 回答
2

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

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

$ heroku addons:open websolr 

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

在此处输入图像描述

于 2014-02-09T23:22:07.090 回答
0

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

于 2015-09-15T15:39:28.153 回答