2012-06-06 79 views
1

我想添加一個時間戳字段到我的模型索引太陽黑子/索爾。 Solr的扼流圈就這個問題和產生NumberFormatException太陽黑子/索爾:索引時間字段結果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提供的「內部」Solr並相應地調整sunspot.yml再現了相同的問題。我的情況看起來很像提到的問題here,但重新安裝Sunspot/Solr配置似乎無法解決它。

編輯:也曾試用過Solr 3.6.0;相同的結果。

回答

6

我懷疑這是由於太陽黑子的type.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年後,此答案仍然相關,並且該錯誤仍存在。我爲此在Github上開了一個問題。 – Cec

+1

修復工作對我來說也差不多5年之後!放置這個覆蓋這個在我的模型的頂部,在類定義之前。使用Solr 6.0.1 /太陽黑子2.2.7 – KPheasey

+0

又一年通過,我們仍然面臨同樣的問題,你的修復仍然有效,但爲什麼這個代碼不能從config/initializer/sunspot/type.rb文件中工作。 – user1969191