2012-04-10 10 views
0

におけるフィルタの複数の値私はスフィンクスインデックスTAG_IDで属性を持っているし、今私は10と11スフィンクス

I DO $ sphinxClient->のSetFilter(「TAG_ID」をTAG_IDしたすべてのレコードを取得したいです、array(10,11))は、すべてがtag_id 10または11を持っています。 ORではなく両方の値をANDできますか? SetFilterへ

答えて

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

複数の呼び出しがAND演算されます:)

+0

私は同じことをしましたが、同じ値を設定して同じフィルタ(tag_id)を設定しても動作しません。 –

+0

それは私にとってはうまくいきます。あなたは何か間違っているかもしれません。 tag_idはMVAではありませんか? – barryhunter

0

がなぜ2つの異なる値はANDで結果を返すでしょう?

それは、ID = 1とID = 2

可能になることはありません

ようなものです。 あなたが働いている風景を教えてもらえますか?

+0

Sphinxでは、属性がMVA(複数値属性)の場合、このような条件で行を返すことができます: 'WHERE tag_id = 1 AND tag_id = 2' –

0

私の場合、バリーの答えは機能しませんでした。

私は何をフィルタリングしているのかを確認しました。必要な値を指定すると、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'])); 
    } 
}