2012-06-06 2 views
1

Я пытаюсь добавить поле временной метки в мою модель для индексирования Sunspot/Solr. Solr дроссели на этом и производит NumberFormatException:Sunspot/Solr: индексирование поля времени приводит к ошибке NumberFormatException

class Book < ActiveRecord::Base 
    attr_accessible :lastUpdated, :category, :title # etc... 

    searchable do 
    text :title 
    text :category 
    time :lastUpdated # mysql 'datetime' field 
    # etc... 
    end 
end 

Jun 06, 2012 10:59:10 AM org.apache.solr.common.SolrException log 
SEVERE: java.lang.NumberFormatException: For input string: "2012-01-02T03:29:00Z" 

Я также попытался использовать date :lastUpdated с теми же результатами.

Думаю, что, возможно, моя модель имеет некоторые фиктивные значения lastUpdated, я попытался проиндексировать результаты с Time.now и получил те же результаты.

Я использую Solr 3.4.0 извне, но воспроизвел ту же проблему, используя «внутренний» Solr, предоставленный sunspot-installer, и соответствующим образом отрегулировал sunspot.yml. Моя ситуация очень похожа на описанную проблему here, но повторная установка конфигурации Sunspot/Solr, похоже, не исправляет ее.

Редактировать: также попробовал Solr 3.6.0; такой же результат.

ответ

6

Я подозреваю, что это связано с ошибкой типа Sunspot.rb. TimeType определяет его indexed_name как «_d», а не «_dt». Я работал над этим в своем коде модели со следующим кодом:

module Sunspot 
    module Type 
    class TimeType < AbstractType 
     def indexed_name(name) #:nodoc: 
     "#{name}_dt" 
     end 
    end 
    register TimeType 
    end 
end 
+2

Спустя 3 года этот ответ по-прежнему актуальен, и ошибка все еще присутствует. Я открыл для него вопрос о Гитубе. – Cec

+1

Fix работал для меня тоже, почти 5 лет спустя! Помещенный это переопределяет это в верхней части моей модели, перед определением класса. Использование Solr 6.0.1/Sunspot 2.2.7 – KPheasey

+0

Еще один год проходит, и мы по-прежнему сталкиваемся с той же проблемой, ваше исправление по-прежнему действует, но почему этот код не работает из файла config/initializer/sunspot/type.rb. – user1969191

Смежные вопросы