Search code examples
ruby-on-railssunspotsunspot-rails

Search integers with Sunspot


I managed to get Sunspot working in my rails setup. My rails setup renders graphs (Chartwell) with input from my database (integers), example: "design: 80, art: 20, code: 40".

Is there a way that I can search for "design" and get all elements with design > 70 (integer, for instance) as output?


Solution

  • You're not giving code, so I'll improvise.

    Since you have everything working, I assume you already have defined your design field indexed in searchable definition in your model.

    After you've done that, you will have a .search block for Sunspot (or Model) in your active code (most probably in a controller).

    So, let's suppose your model name is Graph.

    design = params[:design] # guessing, again.
    Graph.search do
        with(:design).greater_than(design)
        # .... other conditions
    end
    

    This should work for you.

    UPDATE:
    Assuming that you have a design:integer column in your db

    In your event.rb:

    searchable do
        text :name, :location, :date_search
        integer :design
    end
    

    in your events_controller.rb:

    @search = Event.search do
        fulltext params[:search]
        with(:design).greater_than(params[:design].to_i)
    end
    

    Note: You should pass :design as a parameter with your search form