Sunspot / Solr:索引时间字段会导致NumberFormatException

时间:2012-06-06 15:11:09

标签: ruby solr lucene sunspot sunspot-solr

我试图在我的模型中添加一个时间戳字段,以便通过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;同样的结果。

1 个答案:

答案 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