2012-06-06 2 views
3

Я пытался интегрировать геопространственный поиск в мои рельсы приложения в течение нескольких дней в настоящее время, но постоянно получаю эту ошибку, когда я запускаю грабли SunSpot: Solr: переиндексацииВеснушка геопространственной поиска ОШИБКА: неизвестное поле «location_ll»

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

Gems солнечных пятен (2.0.0.pre.120417) sunspot_rails (2.0.0.pre.120417) sunspot_solr (2.0.0.pre.120417)

: широта и долгота находятся в формате флоат

Place модель

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

Я пробовал вариации Веснушка :: Util :: Coordinates.new, в том числе (широта, долгота) и (широта, долгота)

Я посмотрел на https://github.com/sunspot/sunspot/issues/203 и в соответствии с предложениями, остановил мой sunspot server, удалил папку solr, удалил sunspot.yml, переустановил и перезапустил, но все равно получаю ошибку. Есть идеи? Большое спасибо!

ответ

2

Убедитесь schema.xml в папке SOLR соответствует последним один здесь:

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

До сих пор не работает на моем локальном хосте, но на производстве

+0

Спасибо, это помогло. Кроме того, у меня был lat> 90.0, что недопустимо, lon должно быть <= 180 в десятичных градусах. – James

2

Если вы используете websolr вам нужно убедиться, что вы установили свой индекс в Sunspot 2.0 для Ruby on Rails (Solr 3). Mine был дефолт до Sunspot 1.3.x для Ruby on Rails, и это вызывало ошибку unknown field 'location_ll'.

Я использую аддон Heroku, и для этого вы можете установить тип индекса команду:

$ heroku addons:open websolr 

Затем, нажав на индексе (вероятно default), и выбрав из выпадающего списка и ударяя изменение:

enter image description here

0

Кроме того, убедитесь, что schema.xml загружается из каталога Solr, а не из каталога драгоценного камня умолчанию.