Hi Morgan
Have you run 'rake ts:rebuild' so Sphinx is aware of your changes? I can't spot
anything immediately wrong with what you're doing.
Cheers
--
Pat
On 03/11/2010, at 2:28 PM, Morgan Kay wrote:
> Okay, so now I'm adding more search fields to this, and I'm having
> trouble getting it to work. Eventually I am going to end up needing
> to search on about 20 fields, and 7 of those are in related tables.
> Some of them are has_many, and some are has_many, :through.
>
> Here's what I've done so far with one of the has_many tables:
>
> -------------------------------
> source.rb---------------------------------------------
> class Source < ActiveRecord::Base
> has_many :subjects
>
> define_index do
> indexes :text_name
> indexes :editor
> indexes :region
> indexes subject.name, :as => :subject
>
> has created_at, updated_at
> end
> ------------------------------------------------------------------------------------------
>
> -------------------------
> sources_controller.rb-------------------------------------
> class SourcesController < ApplicationController
> def index
> @sources = Source.search :conditions => field_conditions, :page
> => params[:page]
> end
>
> def field_conditions
> %w( text_name editor region subject ).inject({}) do |hash, field|
> hash[field.to_s] = params[field] if params[field].present?
> hash
> end
> end
> -------------------------------------------------------------------------------------------
>
> ------------------------
> index.html.erb------------------------------------------------
> <% form_tag "", :method => :get do -%>
> <fieldset><legend>Search the Online Medieval Sources Bibliography</
> legend>
> Text Name: <%= text_field_tag :text_name %><br />
> Editor: <%= text_field_tag :editor %><br />
> County/Region: <%= text_field_tag :region %><br />
> Subject: <%= text_field_tag :subject %>
> </fieldset>
> <p>
> <%= submit_tag "Search" %>
> </p>
> <% end -%>
> -------------------------------------------------------------------------------------------
>
> If I put anything in the "Subject" search field, I get no results. So
> now what should I be doing?
>
> Thanks!
> Morgan.
>
> On Oct 28, 10:20 pm, Pat Allan <[email protected]> wrote:
>> Hi Morgan
>>
>> With three fields, you're going to want to link each param to the
>> appropriate field in your index. So, with that in mind, the code might look
>> a little like the following:
>>
>> def index
>> Source.search :conditions => field_conditions, :page => params[:page]
>> end
>>
>> private
>>
>> def field_conditions
>> %w( text_name editor region ).inject({}) do |hash, field|
>> hash[field.to_s] = params[field] if params[field].present?
>> hash
>> end
>> end
>>
>> This will build up the conditions hash only when there's actually text to
>> search for in that field.
>>
>> Let me know if this isn't clear, or if you have more questions :)
>>
>> --
>> Pat
>>
>> On 29/10/2010, at 10:10 AM, Morgan Kay wrote:
>>
>>> I'm new to Thinking Sphinx, and have been a little stymied because
>>> there aren't many tutorials out there. I have two search forms on my
>>> site. One just searches one field, so that's super easy, and I have
>>> that up and working just fine. The other is more difficult, because I
>>> need to search several fields. I'm starting with just three for now.
>>
>>> Here's my model:
>>> --------------------------------Source.rb----------------------------
>>> class Source < ActiveRecord::Base
>>
>>> define_index do
>>> indexes :text_name
>>> indexes :editor
>>> indexes :region
>>
>>> has created_at, updated_at
>>> end
>>
>>> end
>>> --------------------------------------------------------------------------
>>
>>> Here's the controller:
>>> ------------------------Sources_controller.rb--------------------
>>> class SourcesController < ApplicationController
>>
>>> def index
>>> @sources = Source.search( (params[:search] || ""), :page=>
>>> (params[:page] || 1))
>>> end
>>
>>> ...
>>> ---------------------------------------------------------------------------
>>
>>> And the view:
>>> ------------------------index.html.erb------------------------------
>>> <% unless @sources.empty? %>
>>> <div id="results">
>>> <%= render :partial => "results" %>
>>> </div>
>>> <% end %>
>>
>>> <% form_tag "", :method => get do -%>
>>> <fieldset>
>>> Text Name: <%= text_field_tag :text_name %><br />
>>> Editor: <%= text_field_tag :editor %><br />
>>> County/Region: <%= text_field_tag :region %>
>>> </fieldset>
>>> <%= submit_tag "Search" %>
>>> <% end -%>
>>> --------------------------------------------------------------------------
>>
>>> I know that the problem is in my text_field_tags. On the form where I
>>> am just searching one field, I have "text_field_tag :search", and that
>>> works just fine, but when I am searching multiple fields, what
>>> parameters should I put in the text_field_tag?
>>
>>> For what it's worth, when I do a search using this form, the URL
>>> contains the right parameters (http://localhost:3000/sources?
>>> text_name=canterbury&editor=®ion=&commit=Search), but it shows all
>>> of the records, not just the ones that match the search criteria.
>>
>>> What do I need to be doing differently?
>>
>>> Thank you!
>>> Morgan.
>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Thinking Sphinx" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected].
>>> For more options, visit this group
>>> athttp://groups.google.com/group/thinking-sphinx?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Thinking Sphinx" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/thinking-sphinx?hl=en.
>
--
You received this message because you are subscribed to the Google Groups
"Thinking Sphinx" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/thinking-sphinx?hl=en.