mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-09 03:32:00 +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
|
|
@ -580,3 +580,6 @@ Jeong, Chan Myeong 070601~070630
|
|||
.tags .tagTypeD a { font-weight:bold; margin:0; background-color:#EFEFEF;}
|
||||
.tags .tagTypeE a { font-weight:normal; margin:0;}
|
||||
|
||||
|
||||
.searchNextButton { border:1px solid #979797; border-left:1px solid #B1B1B1; border-top:1px solid #B1B1B1; color:#4F4F4F; height:21px; font-size:8pt; padding-left:5px; padding-right:5px; _padding-top:3px;}
|
||||
*:first-child+html .searchNextButton { padding-top:3px; }
|
||||
|
|
|
|||
|
|
@ -22,15 +22,15 @@
|
|||
<!-- 페이지 네비게이션 -->
|
||||
<div class="pageNavigation">
|
||||
|
||||
<a href="{getUrl('page','','document_srl','')}" class="goToFirst"><img src="./images/common/icon_gofirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
||||
<a href="{getUrl('page','','document_srl','','division',$division,'last_division',$last_division)}" class="goToFirst"><img src="./images/common/icon_gofirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||
<!--@if($page == $page_no)-->
|
||||
<span class="current">{$page_no}</span>
|
||||
<!--@else-->
|
||||
<a href="{getUrl('page',$page_no,'document_srl','')}">{$page_no}</a>
|
||||
<a href="{getUrl('page',$page_no,'document_srl','','division',$division,'last_division',$last_division)}">{$page_no}</a>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','')}" class="goToLast"><img src="./images/common/icon_golast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','','division',$division,'last_division',$last_division)}" class="goToLast"><img src="./images/common/icon_golast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
@ -57,7 +57,13 @@
|
|||
<!--@foreach($search_option as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
||||
<!--@end-->
|
||||
</select><input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/><input type="image" src="./images/common/btn_search.gif" alt="{$lang->cmd_search}" /><input type="image" onclick="location.href='{getUrl('','mid',$mid)}';return false;" src="./images/common/btn_cancel.gif" alt="{$lang->cmd_cancel}" />
|
||||
</select>
|
||||
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/>
|
||||
<!--@if($last_division)-->
|
||||
<input type="button" onclick="location.href='{getUrl('page',1,'document_srl','','division',$last_division,'last_division','')}';return false;" value="{$lang->cmd_search_next}" class="searchNextButton"/>
|
||||
<!--@end-->
|
||||
<input type="image" src="./images/common/btn_search.gif" alt="{$lang->cmd_search}" />
|
||||
<input type="image" onclick="location.href='{getUrl('','mid',$mid)}';return false;" src="./images/common/btn_cancel.gif" alt="{$lang->cmd_cancel}" />
|
||||
</fieldset>
|
||||
</form>
|
||||
<!--@end-->
|
||||
|
|
|
|||
|
|
@ -37,15 +37,15 @@
|
|||
|
||||
<!-- 페이지 네비게이션 -->
|
||||
<div class="pageNavigation">
|
||||
<a href="{getUrl('page','','document_srl','')}" class="goToFirst"><img src="./images/common/bottomGotoFirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
||||
<a href="{getUrl('page','','document_srl','','division',$division,'last_division',$last_division)}" class="goToFirst"><img src="./images/common/bottomGotoFirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||
<!--@if($page == $page_no)-->
|
||||
<span class="current">{$page_no}</span>
|
||||
<!--@else-->
|
||||
<a href="{getUrl('page',$page_no,'document_srl','')}">{$page_no}</a>
|
||||
<a href="{getUrl('page',$page_no,'document_srl','','division',$division,'last_division',$last_division)}">{$page_no}</a>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','')}" class="goToLast"><img src="./images/common/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','','division',$division,'last_division',$last_division)}" class="goToLast"><img src="./images/common/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
@ -61,8 +61,12 @@
|
|||
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/><a href="#" onclick="xGetElementById('fo_search').submit();return false;" class="button"><span>{$lang->cmd_search}</span></a><a href="{getUrl('','mid',$mid,'listStyle',$listStyle)}" class="button"><span>{$lang->cmd_cancel}</span></a>
|
||||
|
||||
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/>
|
||||
<!--@if($last_division)-->
|
||||
<a href="{getUrl('page',1,'document_srl','','division',$last_division,'last_division','')}" class="button"><span>{$lang->cmd_search_next}</span></a>
|
||||
<!--@end-->
|
||||
<a href="#" onclick="xGetElementById('fo_search').submit();return false;" class="button"><span>{$lang->cmd_search}</span></a>
|
||||
<a href="{getUrl('','mid',$mid,'listStyle',$listStyle)}" class="button"><span>{$lang->cmd_cancel}</span></a>
|
||||
</form>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@
|
|||
$lang->title_bold = 'Bold';
|
||||
$lang->title_color = 'Color';
|
||||
|
||||
$lang->cmd_search_next = '계속 검색';
|
||||
|
||||
$lang->cmd_temp_save = 'Temporary Save';
|
||||
|
||||
$lang->cmd_toggle_checked_document = 'Reverse selected items';
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@
|
|||
$lang->title_bold = '제목 굵게';
|
||||
$lang->title_color = '제목 색깔';
|
||||
|
||||
$lang->cmd_search_next = '계속 검색';
|
||||
|
||||
$lang->cmd_temp_save = '임시 저장';
|
||||
|
||||
$lang->cmd_toggle_checked_document = '선택항목 반전';
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@
|
|||
$lang->move_target_module = "移動対象モジュール";
|
||||
$lang->title_bold = 'タイトル太字';
|
||||
$lang->title_color = 'タイトル文字色';
|
||||
|
||||
$lang->cmd_search_next = '계속 검색';
|
||||
|
||||
$lang->cmd_temp_save = '臨時保存';
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@
|
|||
$lang->title_bold = '제목 굵게';
|
||||
$lang->title_color = '제목 색깔';
|
||||
|
||||
$lang->cmd_search_next = '계속 검색';
|
||||
|
||||
$lang->cmd_temp_save = '임시 저장';
|
||||
|
||||
$lang->cmd_toggle_checked_document = '선택항목 반전';
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@
|
|||
$lang->title_bold = 'Жирное Название';
|
||||
$lang->title_color = 'Цвет Названия';
|
||||
|
||||
$lang->cmd_search_next = '계속 검색';
|
||||
|
||||
$lang->cmd_temp_save = 'Сохранить временно';
|
||||
|
||||
$lang->cmd_toggle_checked_document = 'Перевернуть выбранные объекты';
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@
|
|||
$lang->title_bold = '粗标题';
|
||||
$lang->title_color = '标题颜色';
|
||||
|
||||
$lang->cmd_search_next = '계속 검색';
|
||||
|
||||
$lang->cmd_temp_save = '临时保存';
|
||||
|
||||
$lang->cmd_toggle_checked_document = '反选';
|
||||
|
|
|
|||
18
modules/document/queries/getDocumentDivision.xml
Normal file
18
modules/document/queries/getDocumentDivision.xml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<query id="getDocumentDivision" action="select">
|
||||
<tables>
|
||||
<table name="documents" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="in" column="module_srl" var="module_srl" filter="number" />
|
||||
<condition operation="more" column="list_order" var="list_order" filter="number" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="list_order" order="order_type" />
|
||||
<list_count var="list_count" default="1" />
|
||||
<page_count var="page_count" default="1" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
12
modules/document/queries/getDocumentDivisionCount.xml
Normal file
12
modules/document/queries/getDocumentDivisionCount.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="getDocumentDivisionCount" action="select">
|
||||
<tables>
|
||||
<table name="documents" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="count(*)" alias="count"/>
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="in" column="module_srl" var="module_srl" filter="number" />
|
||||
<condition operation="excess" column="list_order" var="list_order" filter="number" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
@ -8,6 +8,11 @@
|
|||
<conditions>
|
||||
<condition operation="in" column="module_srl" var="module_srl" filter="number" />
|
||||
<condition operation="equal" column="category_srl" var="category_srl" pipe="and" />
|
||||
<condition operation="equal" column="is_notice" var="s_is_notice" pipe="and" />
|
||||
<group pipe="and">
|
||||
<condition operation="more" column="list_order" var="division" pipe="and" />
|
||||
<condition operation="below" column="list_order" var="last_division" pipe="and" />
|
||||
</group>
|
||||
<group pipe="and">
|
||||
<condition operation="like" column="title" var="s_title" />
|
||||
<condition operation="like" column="content" var="s_content" pipe="or" />
|
||||
|
|
@ -48,7 +53,6 @@
|
|||
<condition operation="like" column="extra_vars19" var="s_extra_vars19" pipe="or" />
|
||||
<condition operation="like" column="extra_vars20" var="s_extra_vars20" pipe="or" />
|
||||
</group>
|
||||
<condition operation="equal" column="is_notice" var="s_is_notice" pipe="and" />
|
||||
<group pipe="and">
|
||||
<condition operation="more" column="last_update" var="start_date" pipe="and" />
|
||||
<condition operation="less" column="last_update" var="end_date" pipe="and" />
|
||||
|
|
|
|||
|
|
@ -8,7 +8,12 @@
|
|||
</columns>
|
||||
<conditions>
|
||||
<condition operation="in" column="documents.module_srl" var="module_srl" filter="number" />
|
||||
<condition operation="equal" column="documents.category_srl" var="category_srl" pipe="and" />
|
||||
<condition operation="equal" column="documents.document_srl" default="comments.document_srl" notnull="notnull" pipe="and" />
|
||||
<group pipe="and">
|
||||
<condition operation="more" column="documents.list_order" var="division" pipe="and" />
|
||||
<condition operation="below" column="documents.list_order" var="last_division" pipe="and" />
|
||||
</group>
|
||||
<condition operation="like" column="comments.content" var="s_comment" notnull="notnull" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
|
|
|
|||
|
|
@ -47,3 +47,5 @@
|
|||
.pageNavigation a.goToLast img { display:inline-block; padding:2px 0; position:relative; top:2px; _top:1px;}
|
||||
.pageNavigation .current { position:relative; margin-left:-4px; font:bold 1em Tahoma; color:#ff6600; display:inline-block; padding:1px 7px 1px 6px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; }
|
||||
|
||||
|
||||
.searchNext { text-align:center; margin-top:10px;}
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 756 B After Width: | Height: | Size: 409 B |
|
|
@ -34,13 +34,6 @@
|
|||
<!--@else-->
|
||||
<div id="content">
|
||||
<h3 class="result">{$result_text}</h3>
|
||||
<!--
|
||||
<ul class="sortBy">
|
||||
<!--@foreach($lang->is_sort_option as $key => $val)-->
|
||||
<li class="on"><a href="#">{$val}</a></li>
|
||||
<!--@end-->
|
||||
</ul>
|
||||
-->
|
||||
<ul class="searchResult">
|
||||
<!--@foreach($document_list as $no => $document)-->
|
||||
<li>
|
||||
|
|
@ -58,17 +51,22 @@
|
|||
<!--@end-->
|
||||
</ul>
|
||||
<div class="pageNavigation">
|
||||
<a href="{getUrl('page','','document_srl','','search_target',$search_target,'is_keyword',$is_keyword)}" class="goToFirst"><img src="./images/{$module_info->colorset}/bottomGotoFirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
||||
<a href="{getUrl('page','','document_srl','','search_target',$search_target,'is_keyword',$is_keyword,'division',$division,'last_division',$last_division)}" class="goToFirst"><img src="./images/{$module_info->colorset}/bottomGotoFirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||
<!--@if($page == $page_no)-->
|
||||
<span class="current">{$page_no}</span>
|
||||
<!--@else-->
|
||||
<a href="{getUrl('page',$page_no,'document_srl','','search_target',$search_target,'is_keyword',$is_keyword)}">{$page_no}</a>
|
||||
<a href="{getUrl('page',$page_no,'document_srl','','search_target',$search_target,'is_keyword',$is_keyword,'division',$division,'last_division',$last_division)}">{$page_no}</a>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','','search_target',$search_target,'is_keyword',$is_keyword)}" class="goToLast"><img src="./images/{$module_info->colorset}/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','','search_target',$search_target,'is_keyword',$is_keyword,'division',$division,'last_division',$last_division)}" class="goToLast"><img src="./images/{$module_info->colorset}/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!--@end-->
|
||||
<!--@if($last_division)-->
|
||||
<div class="searchNext">
|
||||
<span class="button"><input type="button" value="{$lang->cmd_search_next}" onclick="location.href='{getUrl('page',1,'document_srl','','search_target',$search_target,'is_keyword',$is_keyword,'division',$last_division,'last_division','')}';return false;" /></span>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue