Sha256: c43d4cf8567c2800962156534a2e9e7c6fc7e7fdc0211557035f4d9df29d9b21

Contents?: true

Size: 1.31 KB

Versions: 13

Compression:

Stored size: 1.31 KB

Contents

module Sunspot
  module Query
    # 
    # Abstract class for function queries.
    #
    class FunctionQuery 

      def ^(y)
        @boost_amount = y
        self
      end
    end

    #
    # Function query which represents a constant.
    #
    class ConstantFunctionQuery < FunctionQuery
      def initialize(constant)
        @constant = constant
      end

      def to_s
        Type.to_literal(@constant) << (@boost_amount ? "^#{@boost_amount}" : "")
      end
    end

    #
    # Function query which represents a field.
    #
    class FieldFunctionQuery < FunctionQuery
      def initialize(field)
        @field = field
      end

      def to_s
        "#{Util.escape(@field.indexed_name)}" << (@boost_amount ? "^#{@boost_amount}" : "")
      end
    end

    #
    # Function query which represents an actual function invocation.
    # Takes a function name and arguments as parameters.
    # Arguments are in turn FunctionQuery objects.
    #
    class FunctionalFunctionQuery < FunctionQuery
      def initialize(function_name, function_args)
        @function_name, @function_args = function_name, function_args
      end

      def to_s
        params = @function_args.map { |arg| arg.to_s }.join(",")
        "#{@function_name}(#{params})" << (@boost_amount ? "^#{@boost_amount}" : "")
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 2 rubygems

Version Path
sunspot-2.5.0 lib/sunspot/query/function_query.rb
sunspot-2.4.0 lib/sunspot/query/function_query.rb
sunspot-2.3.0 lib/sunspot/query/function_query.rb
sunspot-2.2.8 lib/sunspot/query/function_query.rb
enju_leaf-1.2.1 vendor/bundle/ruby/2.3/gems/sunspot-2.2.7/lib/sunspot/query/function_query.rb
sunspot-2.2.7 lib/sunspot/query/function_query.rb
sunspot-2.2.6 lib/sunspot/query/function_query.rb
sunspot-2.2.5 lib/sunspot/query/function_query.rb
sunspot-2.2.4 lib/sunspot/query/function_query.rb
sunspot-2.2.3 lib/sunspot/query/function_query.rb
sunspot-2.2.2 lib/sunspot/query/function_query.rb
sunspot-2.2.1 lib/sunspot/query/function_query.rb
sunspot-2.2.0 lib/sunspot/query/function_query.rb