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을 사용하고 있지만 sunspot-installer에서 제공하는 "internal"Solr을 사용하여 동일한 문제를 재현하고 이에 따라 sunspot.yml을 조정했습니다. 제 상황은 here으로 언급 된 문제와 비슷하지만 Sunspot/Solr 구성을 다시 설치하면 문제가 해결되지 않습니다.

수정 : Solr 3.6.0에 대해서도 시도했습니다. 같은 결과.

답변

6

이것이 Sunspot의 type.rb에있는 버그로 인한 것 같습니다. TimeTypeindexed_name을 "_d"대신 "_d"로 정의합니다. 나는이 모델 코드에서 다음과 같이 작업했다.

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

3 년 후에도이 대답은 여전히 ​​관련이 있으며 버그는 여전히 존재한다. 나는 Github에 대해이 문제를 열었습니다. – Cec

+1

거의 5 년 후에도 수정 프로그램이 나에게 도움이되었습니다! 이 정의를 클래스 정의 앞에 내 모델의 맨 위에 놓습니다. Solr 6.0.1/Sunspot 2.2.7 사용하기 – KPheasey

+0

일년이 지난 지금도 여전히 동일한 문제가 발생하고 있지만 수정 사항은 여전히 ​​유효하지만 config/initializer/sunspot/type.rb 파일에서이 코드가 작동하지 않는 이유는 무엇입니까? – user1969191

관련 문제