我的狮身人面像索引 tag_id 中有一个属性,现在我想获取所有 tag_id 为 10 和 11 的记录
当我执行 $sphinxClient->setFilter('tag_id', array(10,11)) 时,它会获取所有 tag_id 10 或 11 是否可以对两个值进行 AND 而不是 OR?
我的狮身人面像索引 tag_id 中有一个属性,现在我想获取所有 tag_id 为 10 和 11 的记录
当我执行 $sphinxClient->setFilter('tag_id', array(10,11)) 时,它会获取所有 tag_id 10 或 11 是否可以对两个值进行 AND 而不是 OR?
$sphinxClient->setFilter('tag_id', array(10));
$sphinxClient->setFilter('tag_id', array(11));
对 setFilter 的多次调用是 ANDed :)
为什么两个不同的值会用 AND 返回结果?
就像是
其中 id = 1 且 id = 2
这永远不可能。你能告诉我们你想要工作的场景吗?
就我而言,巴里的回答没有奏效。
我检查了我过滤的内容 - 一个数组或不是数组。通过规范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'] ) );
}
}