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

Postgresql Sphinx搜索/过滤器提供不同的结果,然后对数据库执行相同的查询,postgresql,sphinx,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, \

在我的配置文件中

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份文件

在数据库上运行时(我认为是完全相同的查询))

我得到41个结果


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

首先,您使用不同的联接(第一个查询中使用左联接,第二个查询中使用联接)。其次,您可以运行
mysql
client,并使用以下命令监视索引内容:

SELECT * FROM your_index LIMIT 100; 

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

尝试通过sphinxapi或sphinxql运行查询。不要使用“搜索”工具,因为它没有维护,而且非常破损。它已从最新版本的sphinx中删除,因为它已被遗忘。在实际设置中,它们都是左连接,是的,我确保返回结果的数量没有限制或问题。我也在使用postgres,不知道这是否重要。是的,我知道你在使用postgres。我的意思是sphinxsearch有一个sql客户端(比如postgres的
psql
),您可以使用
mysql
运行它。你可以找到一个例子。
SELECT * FROM your_index LIMIT 100;