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ましたが、同じ結果が得られました。

私はSolr3.4.0を外部で使用していますが、によって提供される「内部」Solrを使用して同じ問題を再現し、それに応じsunspot-installerて調整しています。私の状況はここsunspot.ymlで述べた問題によく似ているようですが、Sunspot/Solr構成を再インストールしても修正されないようです。

編集:Solr3.6.0に対しても試しました。同じ結果。

4

1 に答える 1

11

これはSunspotのtype.rbのバグが原因だと思います。「_dt」ではなく「_d」とTimeType定義します。indexed_name私はモデルコードでこれを次のように回避しました:

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 に答える