mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-09 11:44:10 +09:00
게시글 검색시 division을 적용하여 5000개 단위로 검색하고 계속 검색하도록 하여 속도 증가
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3155 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
539c32082e
commit
1d4191e9ba
17 changed files with 148 additions and 21 deletions
|
|
@ -139,10 +139,13 @@
|
|||
$args->page_count = $obj->page_count?$obj->page_count:10;
|
||||
$args->start_date = $obj->start_date?$obj->start_date:null;
|
||||
$args->end_date = $obj->end_date?$obj->end_date:null;
|
||||
//if($except_notice) $args->s_is_notice = 'N';
|
||||
|
||||
// 기본으로 사용할 query id 지정 (몇가지 검색 옵션에 따라 query id가 변경됨)
|
||||
$query_id = 'document.getDocumentList';
|
||||
|
||||
// 내용검색일 경우 document division을 지정하여 검색하기 위한 처리
|
||||
$use_division = false;
|
||||
|
||||
// 검색 옵션 정리
|
||||
$search_target = $obj->search_target;
|
||||
$search_keyword = $obj->search_keyword;
|
||||
|
|
@ -151,15 +154,18 @@
|
|||
case 'title' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
$args->s_title = $search_keyword;
|
||||
$use_division = true;
|
||||
break;
|
||||
case 'content' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
$args->s_content = $search_keyword;
|
||||
$use_division = true;
|
||||
break;
|
||||
case 'title_content' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
$args->s_title = $search_keyword;
|
||||
$args->s_content = $search_keyword;
|
||||
$use_division = true;
|
||||
break;
|
||||
case 'user_id' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
|
|
@ -225,16 +231,73 @@
|
|||
$args->s_comment = $search_keyword;
|
||||
$args->sort_index = 'documents.'.$args->sort_index;
|
||||
$query_id = 'document.getDocumentListWithinComment';
|
||||
$use_division = true;
|
||||
break;
|
||||
default :
|
||||
preg_match('/^extra_vars([0-9]+)$/',$search_target,$matches);
|
||||
if($matches[1]) {
|
||||
$args->{"s_extra_vars".$matches[1]} = $search_keyword;
|
||||
$use_division = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 만약 use_division이 true일 경우 document division을 이용하도록 변경
|
||||
**/
|
||||
if($use_division) {
|
||||
// 시작 division
|
||||
$division = (int)Context::get('division');
|
||||
|
||||
// division값이 없다면 제일 상위
|
||||
if(!$division) {
|
||||
$division_args->module_srl = $args->module_srl;
|
||||
$division_args->list_count = 1;
|
||||
$division_args->sort_index = $args->sort_index;
|
||||
$division_args->order_type = $args->order_type;
|
||||
$output = executeQuery("document.getDocumentList", $division_args);
|
||||
if($output->data) {
|
||||
$item = array_pop($output->data);
|
||||
$division = $item->list_order;
|
||||
}
|
||||
$division_args = null;
|
||||
}
|
||||
|
||||
// 마지막 division
|
||||
$last_division = (int)Context::get('last_division');
|
||||
|
||||
// 지정된 division에서부터 5000개 후의 division값을 구함
|
||||
if(!$last_division) {
|
||||
$last_division_args->module_srl = $args->module_srl;
|
||||
$last_division_args->list_count = 1;
|
||||
$last_division_args->sort_index = $args->sort_index;
|
||||
$last_division_args->order_type = $args->order_type;
|
||||
$last_division_args->list_order = $division;
|
||||
$last_division_args->page = 5001;
|
||||
$output = executeQuery("document.getDocumentDivision", $last_division_args);
|
||||
if($output->data) {
|
||||
$item = array_pop($output->data);
|
||||
$last_division = $item->list_order;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// last_division 이후로 글이 있는지 확인
|
||||
if($last_division) {
|
||||
$last_division_args = null;
|
||||
$last_division_args->module_srl = $args->module_srl;
|
||||
$last_division_args->list_order = $last_division;
|
||||
$output = executeQuery("document.getDocumentDivisionCount", $last_division_args);
|
||||
if($output->data->count<1) $last_division = null;
|
||||
}
|
||||
|
||||
$args->division = $division;
|
||||
$args->last_division = $last_division;
|
||||
Context::set('division', $division);
|
||||
Context::set('last_division', $last_division);
|
||||
}
|
||||
|
||||
// document.getDocumentList 쿼리 실행
|
||||
$output = executeQueryArray($query_id, $args);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue