solr,
/*** (分语言)每天从过去一个月内的所有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;
}
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。