和sphinx中的过滤器的多个值

时间:2012-04-10 13:54:12

标签: php search-engine sphinx

我的sphinx索引中有一个属性tag_id,现在我想获取所有包含tag_id 10和11的记录

当我执行$ sphinxClient-> setFilter('tag_id',array(10,11))时,它会获取所有tag_id 10或11 是否可以AND两个值而不是OR?

3 个答案:

答案 0 :(得分:1)

$sphinxClient->setFilter('tag_id', array(10));
$sphinxClient->setFilter('tag_id', array(11));

对setFilter的多次调用是ANDed:)

答案 1 :(得分:0)

为什么两个不同的值会以AND ??

返回结果

就像

WHERE id = 1 AND id = 2

永远不可能。 你能告诉我们你正在努力工作的场景吗?

答案 2 :(得分:0)

就我而言,巴里的回答并没有奏效。

我已经检查了什么是im过滤 - 数组或不是数组。通过规范http://php.net/manual/en/sphinxclient.setfilter.php获取您需要的值:'纯数组的整数值。'

if( !empty( $filters['user_id'] ) ) 
{
  if( is_array( $filters['user_id'] ) )
  {
    $this->sphinx->setFilter( 'user_id', $filters['user_id'] );
  }
  else
  {
    $this->sphinx->setFilter( 'user_id', array( (int) $filters['user_id'] ) );
  }
}