solr

来源:互联网 发布:属下知罪by枯目微盘 编辑:程序博客网 时间:2024/05/16 05:13
/**
* (分语言)每天从过去一个月内的所有pin里出现次数多的顺序对tag进行排列,根据页面可显示空间取前30-40个显示
* @param unknown_type $startTime
* @return unknown
*/
public function findRankTags($startTime,$number){
$map = new MongoCode('function(){
if(this.tags != null && typeof this.tags != "undefined"){
for (var i = 0; i < this.tags.length; i++)  {
          emit(this.tags[i], 1);
        }
}
}            
');
$reduce = new MongoCode('function(k, v)  {
       var total = 0;
       for (var i = 0; i < v.length; i++)  {
           total += v[i];
       }
       return total;
   }');
$db = parent::getMongoDB();
$tmpTable = "eventCounts";
$comm= $db->command(array(
   "mapreduce" => "UserModel", 
   "map" => $map,
   "reduce" => $reduce,
   "query" => array("create_time" => array("\$gte"=>$startTime)),
"out" => array("merge" => $tmpTable)));
$rs = $db->selectCollection($comm['result'])->find();
$tmpArray = array();
foreach ($rs as $item) {
    $trs['tn'] = strip_tags($item["_id"]);
$trs['c'] = $item["value"];
array_push($tmpArray,$trs);
}
//排序
if (!empty($tmpArray)){
@usort($tmpArray,function_sort);
if (count($tmpArray) > $number){
$tmpArray = array_slice($tmpArray,0,$number);
}
$tnArray = array();
foreach ($tmpArray as $comm) {
array_push($tnArray,$comm['tn']);
}
}
//删除临时表
$db->$tmpTable->drop();
return $tnArray;

}



2./**
* 通过用户名ID获取当前用户所创建的所有标签,并通过TagName分组排序
*/
public function getDataTagByUserIdGourpByTagNameCount($user_id,$offset,$limit){
$dataTagDao = parent::getDBDataTagModel();
//通过TagName分组获取所有的Tag并通过count排序
if (!empty($dataTagDao)){
$keys = array("tag_name" => 1);
$initial = array("items" => array());
$reduce = "function (obj, prev) { prev.items.push(obj); }";
$condition = array("user_id" => $user_id);
$g = $dataTagDao->group($keys, $initial, $reduce, $condition);

usort($g['retval'],create_function('$a,$b', 'return (count($a["items"]) < count($b["items"])) ? 1 : -1;'));

return array_slice($g['retval'],$offset,$limit);
}
return null;
}