2

我正在尝试将时间戳字段添加到我的模型中,以便通过 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,但使用提供的“内部”Solr 重现了相同的问题sunspot-installer,并进行了相应调整sunspot.yml。我的情况看起来很像这里提到的问题,但是重新安装 Sunspot/Solr 配置似乎并没有解决它。

编辑:也尝试过 Solr 3.6.0;同样的结果。

4

1 回答 1

11

我怀疑这是由于 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
于 2012-06-17T00:54:42.340 回答