I have an application in which I need to implement the faceted search
functionality on one of the fields of the associated models and it
does not seem to be working. Here is a brief context: There are 3
models I am working: 1. Product 2. Attributes 3. AttributeProduct

class Product < ActiveRecord::Base
  ...
  has_many :product_attributes
  has_many :prod_attrs, :through => :product_attributes, :class_name
=> 'Attribute'

  has_one :brand, :class_name => "AttributeProduct", :conditions =>
"product_attributes.attribute_id IN (Select id from attributes where
name = 'Brand')"
  has_one :model, :class_name => "AttributeProduct", :conditions =>
"product_attributes.attribute_id IN (Select id from attributes where
name = 'Model')"
  ....

  define_index do
    indexes :name
    indexes description
    indexes product_category(:name), :as => :sub_category

    indexes brand(:attribute_value), :as => :brand, :facet => true
    indexes model(:attribute_value), :as => :model,  :facet => true

    where "products.online = 1 AND products.product_category_id IN
(SELECT id FROM product_categories WHERE
product_categories.parent_category_id IS NOT NULL)"
  end

end
-----------------------------------------------------------------------
class AttributeProduct < ActiveRecord::Base
  # => Since attribute is already taken, renaming the association
method to prod_attr
  belongs_to :attribute
  belongs_to :product
  ...
end
------------------------------------------------------------------
class Attribute < ActiveRecord::Base
  has_many :attribute_products
  has_many :products, :through => :product_attributes
  ....
end
------------------------------------------------------------------

I have defined 1:1 relationship between product and a brand & between
product and a model. Then I define indexes on both and make them
facets.

Now in the Product model, the search for the brand returns results but
the search for the model name does not return any result.

For example:
 Product.search(:conditions => {:model => "U2716"})
 Sphinx   Querying: '@model U2716'
 Sphinx (0.002063s)   Found 0 result
-------------------------------------------------------------------
 Product.search(:conditions => {:brand => "Calvin"})
  Sphinx   Querying: '@brand Calvin'
  Sphinx (0.004142s)   Found 7 results
-------------------------------------------------------------------

In my understanding "model" facets content is getting indexed. The
results are below:

Product.facets(:conditions => {:brand => "Calvin"})
{:model=>{"U2716"=>7}, :product_category_id=>{6=>1,
2=>6}, :cost=>{1=>3, 2=>4}, :brand=>{"Calvin Klein"=>7}}
---------------------------------------------------------------------
>> Product.facets(:conditions => {:model => "U2716"})
{:model=>{}, :product_category_id=>{}, :cost=>{}, :brand=>{}}

I was wondering if guys have any thoughts opinions on how I can get
this issue that get me back the results i.e.
"Product.facets(:conditions => {:model => "U2716"})". # => some
results back.

-- 
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.

Reply via email to