Hey Pat,

Thanks for responding. Here is the sql that is getting generated:

SELECT SQL_NO_CACHE `products`.`id` * 1 + 0 AS `id` ,
`products`.`name` AS `name`, `products`.`custom_name` AS
`custom_name`, `products`.`description` AS `description`,
`products`.`custom_description` AS `custom_description`,
`product_attributes`.`attribute_value` AS `brand`,
`models_products`.`attribute_value` AS `model`, `products`.`id` AS
`sphinx_internal_id`, 485965105 AS `class_crc`, 0 AS `sphinx_deleted`,
CRC32(`product_attributes`.`attribute_value`) AS `brand_facet`,
CRC32(`models_products`.`attribute_value`) AS `model_facet`,
`amazon_stores`.`id` AS `amazon_store_id`,
`products`.`product_category_id` AS `category_id` FROM `products`
LEFT OUTER JOIN `product_attributes` ON product_attributes.product_id
= products.id AND product_attributes.attribute_id IN (Select id from
attributes where name = 'Brand')   LEFT OUTER JOIN
`product_attributes` models_products ON models_products.product_id =
products.id AND product_attributes.attribute_id IN (Select id from
attributes where name = 'Model')   LEFT OUTER JOIN
`product_categories` ON `product_categories`.id =
`products`.product_category_id   LEFT OUTER JOIN `amazon_stores` ON
`amazon_stores`.id = `product_categories`.amazon_store_id  WHERE
`products`.`id` >= $start AND `products`.`id` <= $end AND
products.online = 1 AND             product_attributes.attribute_id IN
(SELECT id FROM attributes WHERE name IN ('Brand', 'Model'))
AND             products.price_lowest IS NOT NULL AND
products.product_category_id IN (SELECT id FROM product_categories
WHERE product_categories.parent_category_id IS NOT NULL) GROUP BY
`products`.`id`  ORDER BY NULL

define_index do
    indexes :name
    indexes custom_name
    indexes description
    indexes custom_description
    has product_category.amazon_store(:id), :as => :amazon_store_id

    indexes brand.attribute_value, :as => :brand, :facet => true
    indexes model.attribute_value, :as => :model, :facet => true
    has product_category_id, :as => :category_id, :type
=> :integer, :facet => true

where "products.online = 1 AND \
            product_attributes.attribute_id IN (SELECT id FROM
attributes WHERE name IN ('Brand', 'Model')) AND \
            products.price_lowest IS NOT NULL AND \
            products.product_category_id IN (SELECT id FROM
product_categories WHERE product_categories.parent_category_id IS NOT
NULL)"

end

O/P:
>> Product.facets(:conditions => {:brand => "Calvin"})
  Sphinx   Querying: '@brand Calvin'
  Sphinx (0.003586s)   Found 1 results
  Product Load (0.2ms)   SELECT * FROM `products` WHERE
(`products`.`id` IN (46788))
  ProductAttribute Load (0.1ms)   SELECT * FROM `product_attributes`
WHERE (`product_attributes`.product_id = 46788 AND
(product_attributes.attribute_id IN (Select id from attributes where
name = 'Brand'))) LIMIT 1
  Sphinx   Querying: '@brand Calvin'
  Sphinx (0.003979s)   Found 1 results
  Product Load (0.2ms)   SELECT * FROM `products` WHERE
(`products`.`id` IN (46788))
  ProductAttribute Load (1.1ms)   SELECT * FROM `product_attributes`
WHERE (`product_attributes`.product_id = 46788 AND
(product_attributes.attribute_id IN (Select id from attributes where
name = 'Model'))) LIMIT 1
  Sphinx   Querying: '@brand Calvin'
  Sphinx (0.004161s)   Found 2 results
  Product Load (0.2ms)   SELECT * FROM `products` WHERE
(`products`.`id` IN (3787,46788))
  Sphinx   Querying: '@brand Calvin'
  Sphinx (0.004333s)   Found 1 results
  Product Load (8.6ms)   SELECT * FROM `products` WHERE
(`products`.`id` IN (46788))
{:brand=>{"Calvin
Klein"=>7}, :model=>{"U2716"=>7}, :category_id=>{6=>1, 2=>6}}
>> Product.facets(:conditions => {:model => "U2716"})
  Sphinx   Querying: '@model U2716'
  Sphinx (0.003485s)   Found 0 results
  Sphinx   Querying: '@model U2716'
  Sphinx (0.002976s)   Found 0 results
  Sphinx   Querying: '@model U2716'
  Sphinx (0.004659s)   Found 0 results
  Sphinx   Querying: '@model U2716'
  Sphinx (0.002868s)   Found 0 results
{:brand=>{}, :model=>{}, :category_id=>{}}


Let me know your thoughts.

Thanks
Gaurav

On Jul 7, 7:05 am, Pat Allan <[email protected]> wrote:
> Hi Gaurav
>
> Something definitely is going wrong here, but it's failing even before the 
> facets - a normal search query for U2716 should return something...
>
> What's the sql_query value in config/development.sphinx.conf for your product 
> source?
>
> --
> Pat
>
> On 01/07/2010, at 4:00 PM, gaurav wrote:
>
> > 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 
> > 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.

Reply via email to