Aha! That did it! Thank you!! Morgan. On Nov 4, 6:15 am, Pat Allan <[email protected]> wrote: > Ah... If you have_many :subjects, then your reference in your define_index > block should be plural as well: > > indexes subjects.name, :as => :subjects > > Or was that a typo in the email, but not the code? > > -- > Pat > > On 04/11/2010, at 3:32 AM, Morgan Kay wrote: > > > Yes, I have. Any other suggestions? > > > Thank you! > > Morgan. > > > On Nov 2, 11:41 pm, Pat Allan <[email protected]> wrote: > >> 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 > >>> 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 > > 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.
