Php Sphinx搜索不同代码不同结果

Php Sphinx搜索不同代码不同结果,php,sphinx,Php,Sphinx,我有一个产品表: id, code, name, groups, price 1 C001 Name1 71,71,209, 10 2 C002 Name2 76,77,221, 31 3 C003 Name3 171,437,2541, 50 当我尝试使用下面的代码获取结果时,一切正常: $s->ResetFilters(); $s->SetMatchMode(SPH_MATCH_EXTENDED); $s->SetLimits($page, 20); $

我有一个产品表:

id, code, name, groups, price
1   C001  Name1 71,71,209, 10
2   C002  Name2 76,77,221, 31
3   C003  Name3 171,437,2541, 50
当我尝试使用下面的代码获取结果时,一切正常:

$s->ResetFilters();
$s->SetMatchMode(SPH_MATCH_EXTENDED);
$s->SetLimits($page, 20);
$products = $s->query('@groups 71|77', 'products');
我得到了正确的结果:ID:1和2

我不明白为什么这个代码不起作用:

$s->ResetFilters();
$s->SetLimits($page, 20);
$s->SetSelect("*");
$s->SetFilter('groups', array(71,77));
$products = $s->query('','products');
在这种情况下,每次attrs数组为空时,我都有错误的products和groups字段

还有一个问题:在没有限制指令的情况下,如何从结果中找到最小和最大价格:

$s->SetLimits($page, 20);

谢谢。

属性和全文字段在Sphinx中是不同的。查询用于进行全文搜索,只要组是全文字段,您就可以在那里使用它。如果要使组成为属性,则需要:

使用sql属性将其定义为配置中的属性, rt_attr_uint、rt_attr_multi或smth其他,具体取决于 那个 使用SetFilter按属性进行筛选。 要找到最低和最高价格,您可以这样做

$cl->SetSelect('*,min(price),max(price)');
另外,我建议您使用SphinxQL,因为它具有更广泛的功能,对于大多数人来说,更易于理解和编程