onethink搜索功能完善教程,搜索匹配标题和内容或者加上描述同时检索。
if(I('get.kw')){
$kw = trim(I('get.kw'));
$map['title'] = array('like',"%{$kw}%");
$like_id = $this->logic(2)->where("content like '%{$kw}%'")->getField('id', true);
if($like_id)
$map['id'] = array('in', $like_id);
}
上面if条件主要判断当前检索的关键词是否存在,加入搜索查询条件。
下面的函数是onethink文档模型中的设置where查询条件函数。
/**
* 设置where查询条件
* @param number $category 分类ID
* @param number $pos 推荐位
* @param integer $status 状态
* @return array 查询条件
*/
private function listMap($category, $status = 1, $pos = null){
/* 设置状态 */
$map = array('status' => $status, 'pid' => 0);
/* 设置分类 */
if(!is_null($category)){
if(is_numeric($category)){
$map['category_id'] = $category;
} else {
$map['category_id'] = array('in', str2arr($category));
}
}
$map['create_time'] = array('lt', NOW_TIME);
$map['_string'] = 'deadline = 0 OR deadline > ' . NOW_TIME;
/* 设置推荐位 */
if(is_numeric($pos)){
$map[] = "position & {$pos} = {$pos}";
}
return $map;
}
发表评论 取消回复