Sha256: 8f1039959cb96427bf84467c6f35df56cf907ab5c1448db4b92f90b7d09f39d0

Contents?: true

Size: 1.56 KB

Versions: 11

Compression:

Stored size: 1.56 KB

Contents

module Sunspot
  module Query
    class MoreLikeThis
      attr_reader :fields

      def initialize(document)
        @document_scope = Restriction::EqualTo.new(
          false,
          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[:"mlt.qf"] = boosted_fields.map do |field|
            field.to_boosted_field
          end.join(' ')
        end
        params
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
sunspot-2.7.1 lib/sunspot/query/more_like_this.rb
sunspot-2.7.0 lib/sunspot/query/more_like_this.rb
sunspot-2.6.0 lib/sunspot/query/more_like_this.rb
sunspot-2.5.0 lib/sunspot/query/more_like_this.rb
sunspot-2.4.0 lib/sunspot/query/more_like_this.rb
sunspot-2.3.0 lib/sunspot/query/more_like_this.rb
sunspot-2.2.8 lib/sunspot/query/more_like_this.rb
enju_leaf-1.2.1 vendor/bundle/ruby/2.3/gems/sunspot-2.2.7/lib/sunspot/query/more_like_this.rb
sunspot-2.2.7 lib/sunspot/query/more_like_this.rb
sunspot-2.2.6 lib/sunspot/query/more_like_this.rb
sunspot-2.2.5 lib/sunspot/query/more_like_this.rb