I posted this over on StackOverflow a little while ago and thought I might try here as well:
Here is the question. <http://stackoverflow.com/q/13225897/1225765> I'm working with a old database and drawing blank on how to set up the association and index it with Thinking Sphinx. I want to index the People and Group's skill. I have Users. Users can create People and Groups. People and Groups have a single skill through Sharing_Skill. people and groups tables: ID field, Name field sharings_skills table: ID field, Skill_ID field, Marker_ID(which is the person/group_id), Marker_Type ("Group" or "Person") skills table: ID field, Name field How do I setup the rails association and index the skills of the person or group in the Person model or Group model. my main goal is to refactor my search by indexing the person skills in the person model and searching the name, tags and skills together, instead of searching skills, sharing_skills and people separate like this: This is in my Person model. class Person < ActiveRecord::Base acts_as_taggable acts_as_taggable_on :tags attr_accessible :name, :tag_list validates_presence_of :name belongs_to :marker_image, :class_name => "Photo", :foreign_key => "marker_image_id" belongs_to :user extend FriendlyId friendly_id :name, use: [:slugged, :history] define_index do indexes name indexes tag_taggings.tag(:name), :as => :tags has :id has created_at end This is in my Search Controller #PERSON SEARCHif params[:marker_type].nil? or params[:marker_type].empty? or params[:marker_type] == "Person" #SEARCH NAME, TAGS, (Need to fix skills) conditions = {} %w(name tags).each do |i| i = i.to_sym next unless params[i] conditions[i] = params[i] end person = Person.search_for_ids(params[:search], :conditions => conditions, :per_page => 999999) if !person.empty? person_ids << person end #SEARCH SKILLS IN PERSON MODEL skills = Skill.search_for_ids(params[:search], :per_page => 99999) check_skills_available_persons = SharingsSkill.search(:conditions => {:marker_type => 'Person'}, :with => {:skill_id => skills}, :per_page => 99999) if !check_skills_available_persons.empty? check_people_by_skills = Person.search(:with => {:id => check_skills_available_persons.collect{|x|x.marker_id}}) if !check_people_by_skills.empty? check_people_by_skills.each do |p_skill| person_ids << p_skill.id end end endend -- You received this message because you are subscribed to the Google Groups "Thinking Sphinx" group. To view this discussion on the web visit https://groups.google.com/d/msg/thinking-sphinx/-/jZWd6UpjGBoJ. 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.
