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.