Trip
Trip

Reputation: 27114

How can I scope a Sunspot query?

My trouble with this snippet is that it's returning an integer -1 which means a universal Message that is shared in other accounts as well.

  def build_results
    search = Sunspot.new_search(Message) do
      any_of do
        member.lists.map { |list| with :enterprise_list_id, list.search_id }
      end

How can I add on to this statement to query all Message's with -1 as a search_id but scope it so that it belongs exclusively to member.account ?

I'm trying to scope it as so :

searchable :include => :repliable do
  integer :account_id do
    repliable.try(:account_id)
  end

and..

def build_results
  search = Sunspot.new_search(Message) do

    with :account_id, member.account_id

But this returns nothing even though I know for a fact that there are search results that should be returned because they share a commont account_id.

Upvotes: 1

Views: 947

Answers (1)

Santosh
Santosh

Reputation: 1261

If I understood your question correctly then you just need to add this statements in your Message searchable block.

searchable do
  integer :some_search_ids, :multiple => true do
     member.lists.map { |list| list.search_id} if member.present?
  end

  integer :member_account_id do
    member.account_id if member.present?
  end
end

then,

def build_results
  search = Sunspot.new_search(Message) do
    with(:some_search_ids, some_list_search_id)
    with(:member_account_id, some_member_account_id)
  end
end

Upvotes: 1

Related Questions