【发布时间】:2016-10-27 17:15:02
【问题描述】:
我的 sphinx 索引 tag_id 中有一个属性,现在我想获取所有 tag_id 为 10 和 11 的记录
当我执行 $sphinxClient->setFilter('tag_id', array(10,11)) 时,它会获取所有 tag_id 为 10 或 11 是否可以对两个值进行 AND 而不是 OR?
【问题讨论】:
标签: php search-engine sphinx
我的 sphinx 索引 tag_id 中有一个属性,现在我想获取所有 tag_id 为 10 和 11 的记录
当我执行 $sphinxClient->setFilter('tag_id', array(10,11)) 时,它会获取所有 tag_id 为 10 或 11 是否可以对两个值进行 AND 而不是 OR?
【问题讨论】:
标签: php search-engine sphinx
$sphinxClient->setFilter('tag_id', array(10));
$sphinxClient->setFilter('tag_id', array(11));
对 setFilter 的多次调用是 ANDed :)
【讨论】:
为什么两个不同的值会用AND返回结果??
好像
其中 id = 1 AND id = 2
这永远不可能。 你能告诉我们你想要工作的场景吗?
【讨论】:
WHERE tag_id = 1 AND tag_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'] ) );
}
}
【讨论】: