当SPHINX
返回一个 id 列表时,我看不到如何使用标准对我的最终结果进行排序。
我有一个包含 id 的数组:
$a = array(1,2,3,4,5);
这个 id 数组是由SPHINX
搜索引擎作为结果给出的。
我想使用这个数组并通过 id 提取所需的数据作为 PK,但我必须像这样对结果进行排序:
有视频和照片的用户在所有只有照片的用户之前,有照片的用户在列表中,然后那些有照片的用户应该按照他们最近登录的时间排序,最近的登录在列表的顶部。在所有有照片的用户之后,其余的用户应该在那里,最近登录的用户最先登录。
我试过这个,没有订单字段,因为我不知道如何编写代码;
$criteria = new CDbCriteria();
$criteria->addInCondition('id', $a);
$criteria->order = "FIELD(id, " . join(',', $a) . ")";
$dataProvider = new CActiveDataProvider('user', array(
'criteria' => $criteria,
'pagination' => array(
'pageSize' => $this->pageSize,
),
));
有人尝试过这样的事情吗?或其他建议?