Sha256: 6b5351579f9e853b8a20c60630b85977eb1f5788817b01a9cfba6e424085ccd7

Contents?: true

Size: 1.53 KB

Versions: 7

Compression:

Stored size: 1.53 KB

Contents

module Sunspot
  module Query
    class MoreLikeThis
      attr_reader :fields

      def initialize(document)
        @document_scope = Restriction::EqualTo.new(
          IdField.instance,
          Adapters::InstanceAdapter.adapt(document).index_id
        )
        @fields = {}
        @params = {}
      end

      def add_field(field, boost = nil)
        raise(ArgumentError, "Field #{field.name} is not set up for more_like_this") unless field.more_like_this?
        @fields[field.indexed_name] = TextFieldBoost.new(field, boost)
      end

      def minimum_term_frequency=(mintf)
        @params[:"mlt.mintf"] = mintf
      end

      def minimum_document_frequency=(mindf)
        @params[:"mlt.mindf"] = mindf
      end

      def minimum_word_length=(minwl)
        @params[:"mlt.minwl"] = minwl
      end

      def maximum_word_length=(maxwl)
        @params[:"mlt.maxwl"] = maxwl
      end
      
      def maximum_query_terms=(maxqt)
        @params[:"mlt.maxqt"] = maxqt
      end

      def boost_by_relevance=(should_boost)
        @params[:"mlt.boost"] = should_boost
      end

      def to_params
        params = Sunspot::Util.deep_merge(
          @params,
          :q => @document_scope.to_boolean_phrase
        )
        params[:"mlt.fl"] = @fields.keys.join(",")
        boosted_fields = @fields.values.select { |field| field.boost }
        unless boosted_fields.empty?
          params[:qf] = boosted_fields.map do |field|
            field.to_boosted_field
          end.join(' ')
        end
        params
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 3 rubygems

Version Path
ruben-sunspot-1.1.4 lib/sunspot/query/more_like_this.rb
ruben-sunspot-1.1.3 lib/sunspot/query/more_like_this.rb
ruben-sunspot-1.1.2 lib/sunspot/query/more_like_this.rb
ruben-sunspot-1.1.1 lib/sunspot/query/more_like_this.rb
ruben-sunspot-1.1.0 lib/sunspot/query/more_like_this.rb
nuatt_sunspot-1.1.0.3 lib/sunspot/query/more_like_this.rb
sunspot-1.1.0 lib/sunspot/query/more_like_this.rb