Sphinx搜索/过滤器提供不同的结果,然后对数据库进行相同的查询

时间:2014-02-13 17:54:42

标签: postgresql sphinx

在我的配置文件中..

sql_query = select pr.id, pr.sf_skus, pr.name, pr.description, pr.sf_vendors,
            pr.sf_product_kw, \
            pr.sf_family_kw, pr.sf_class_kw, pr.sf_group_kw, pr.sf_category_kw, \
            pr.sf_sku_descriptions, \
            pc.item_category_id, pc.item_group_id, pc.item_class_id, \
            pc.item_family_id \
            from products as pr \
            left join product_cats as pc on pc.product_id = pr.id

sql_attr_uint = item_category_id
sql_attr_uint = item_group_id
sql_attr_uint = item_class_id
sql_attr_uint = item_family_id

我跑的时候......

search --filter item_family_id 12

我总共找到了26份文件。

我运行时在数据库上的

(完全相同的查询(我认为))...

select pr.id, pr.sf_skus, pr.name, pr.description, pr.sf_vendors, pr.sf_product_kw,
pr.sf_family_kw, pr.sf_class_kw, pr.sf_group_kw, pr.sf_category_kw,
pr.sf_sku_descriptions,
pc.item_category_id, pc.item_group_id, pc.item_class_id,
pc.item_family_id
from products as pr
join product_cats as pc on pc.product_id = pr.id

where pc.item_family_id = 12

我得到41个结果。

这两个不应该相同吗?我究竟做错了什么。 TIA

1 个答案:

答案 0 :(得分:0)

首先,您使用不同的连接(第一个查询中为LEFT JOIN,第二个中为JOIN)。其次,您可以使用以下命令运行mysql客户端并关注索引内容:

SELECT * FROM your_index LIMIT 100; 

您对sphinx的查询可能只返回部分结果。