我试图在我的模型中添加一个时间戳字段,以便通过Sunspot / Solr进行索引。 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,但使用&#34;内部&#34;重现了同样的问题。 Solr由sunspot-installer
提供,并相应地调整sunspot.yml
。我的情况似乎很像here提到的问题,但是重新安装Sunspot / Solr配置似乎无法修复它。
编辑:也尝试过反对Solr 3.6.0;同样的结果。
答案 0 :(得分:9)
我怀疑这是由于Sunspot的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