スフィンクスデータをフィルタリングする方法:スフィンクスに
+----------+-------------+-------------+
| id | car_id | filter_id |
+----------+-------------+-------------+
| 37280991 | 4261 | 46 |
| 37280992 | 4261 | 18 |
| 37281000 | 4261 | 1 |
| 37281002 | 4261 | 28 |
| 51056314 | 4277 | 18 |
| 51056320 | 4277 | 1 |
| 51056322 | 4277 | 28 |
+----------+-------------+-------------+
私は車を表示ページを持っていて、フィルタを適用することができます。私は、スフィンクスがフィルター1と46を持っている車を返そうとしています。上記の表を見れば、ただ一つの車(4261)に両方のフィルターがあることがわかります。問題は、スフィンクスでこれをどのように適用するのか分かりません。
$this->cs->SetFilter('filter_id', array(1, 46)); // this don't work because show me both(4261, 4277) cars, because work like a "in"
$this->cs->SetGroupBy('car_id', SPH_GROUPBY_ATTR);
すべてのレコードに1つのフィルタしかないため、フィルタは一致しません。このようにコードを適用すると、 $ this-> cs-> SetFilter( 'filter_id'、array(1)); $ this-> cs-> SetFilter( 'filter_id'、array(46)); これは次のレコードで検索しようとします 37280991 | 4261 | 4 6 46と1です。したがって、これは無効です。 – wipcrep