Use 'equal' not 'like' for searches on user_id, user_name, nick_name

user_id, user_name, nick_name 검색에는 like가 아닌 equal 조건을 사용하도록 변경함.

이름이나 닉네임으로 검색할 때 LIKE %검색어% 문법이 사용되어
검색 속도가 느려지는 것은 물론, 특정 회원의 작성글 보기 메뉴를 클릭하면
검색어가 포함된 닉네임을 가진 다른 회원의 글까지 모두 표시되어
닉네임을 변경했거나 다중아이디를 사용하는 것으로 오해받는 문제를 수정함.
(예: '라이믹스' 닉네임을 검색하면 '라이믹스최고' 회원의 글도 검색되었음)
This commit is contained in:
Kijin Sung 2017-12-21 14:06:46 +09:00
parent 28a2398e91
commit b6aac0beac
14 changed files with 44 additions and 41 deletions

View file

@ -732,7 +732,7 @@ class commentModel extends comment
case 'user_id' :
if($search_keyword)
{
$search_keyword = str_replace(' ', '%', $search_keyword);
$search_keyword = trim($search_keyword);
}
$args->s_user_id = $search_keyword;
@ -743,7 +743,7 @@ class commentModel extends comment
case 'user_name' :
if($search_keyword)
{
$search_keyword = str_replace(' ', '%', $search_keyword);
$search_keyword = trim($search_keyword);
}
$args->s_user_name = $search_keyword;
@ -752,7 +752,7 @@ class commentModel extends comment
case 'nick_name' :
if($search_keyword)
{
$search_keyword = str_replace(' ', '%', $search_keyword);
$search_keyword = trim($search_keyword);
}
$args->s_nick_name = $search_keyword;
@ -869,7 +869,7 @@ class commentModel extends comment
case 'user_id' :
if($search_keyword)
{
$search_keyword = str_replace(' ', '%', $search_keyword);
$search_keyword = trim($search_keyword);
}
$args->s_user_id = $search_keyword;
@ -879,7 +879,7 @@ class commentModel extends comment
case 'user_name' :
if($search_keyword)
{
$search_keyword = str_replace(' ', '%', $search_keyword);
$search_keyword = trim($search_keyword);
}
$args->s_user_name = $search_keyword;
@ -888,7 +888,7 @@ class commentModel extends comment
case 'nick_name' :
if($search_keyword)
{
$search_keyword = str_replace(' ', '%', $search_keyword);
$search_keyword = trim($search_keyword);
}
$args->s_nick_name = $search_keyword;

View file

@ -12,8 +12,8 @@
<condition operation="equal" column="is_secret" var="s_is_secret" pipe="and" />
<group pipe="and">
<condition operation="like" column="content" var="s_content" pipe="or" />
<condition operation="like" column="user_name" var="s_user_name" pipe="or" />
<condition operation="like" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="equal" column="user_name" var="s_user_name" pipe="or" />
<condition operation="equal" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="email_address" var="s_email_address" pipe="or" />
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="or" />

View file

@ -8,13 +8,13 @@
<column name="count(*)" alias="count" />
</columns>
<conditions>
<condition operation="like" column="member.user_id" var="s_user_id" notnull="notnull" />
<condition operation="equal" column="member.user_id" var="s_user_id" notnull="notnull" />
<condition operation="equal" column="member.member_srl" var="comments.member_srl" notnull="notnull" pipe="and" />
<condition operation="equal" column="comments.is_secret" var="s_is_secret" pipe="and" />
<group pipe="and">
<condition operation="like" column="comments.content" var="s_content" />
<condition operation="like" column="comments.user_name" var="s_user_name" pipe="or" />
<condition operation="like" column="comments.nick_name" var="s_nick_name" pipe="or" />
<condition operation="equal" column="comments.user_name" var="s_user_name" pipe="or" />
<condition operation="equal" column="comments.nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="comments.email_address" var="s_email_address" pipe="or" />
<condition operation="like" column="comments.homepage" var="s_homepage" pipe="or" />
<condition operation="like_prefix" column="comments.regdate" var="s_regdate" pipe="or" />

View file

@ -12,8 +12,8 @@
<condition operation="equal" column="status" var="s_is_published" pipe="and" />
<group pipe="and">
<condition operation="like" column="content" var="s_content" pipe="or" />
<condition operation="like" column="user_name" var="s_user_name" pipe="or" />
<condition operation="like" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="equal" column="user_name" var="s_user_name" pipe="or" />
<condition operation="equal" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="email_address" var="s_email_address" pipe="or" />
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="or" />

View file

@ -7,13 +7,13 @@
<column name="comments.*" />
</columns>
<conditions>
<condition operation="like" column="member.user_id" var="s_user_id" notnull="notnull" />
<condition operation="equal" column="member.user_id" var="s_user_id" notnull="notnull" />
<condition operation="equal" column="member.member_srl" var="comments.member_srl" notnull="notnull" pipe="and" />
<condition operation="equal" column="comments.is_secret" var="s_is_secret" pipe="and" />
<group pipe="and">
<condition operation="like" column="comments.content" var="s_content" />
<condition operation="like" column="comments.user_name" var="s_user_name" pipe="or" />
<condition operation="like" column="comments.nick_name" var="s_nick_name" pipe="or" />
<condition operation="equal" column="comments.user_name" var="s_user_name" pipe="or" />
<condition operation="equal" column="comments.nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="comments.email_address" var="s_email_address" pipe="or" />
<condition operation="like" column="comments.homepage" var="s_homepage" pipe="or" />
<condition operation="like_prefix" column="comments.regdate" var="s_regdate" pipe="or" />

View file

@ -1397,12 +1397,15 @@ class documentModel extends document
$use_division = true;
break;
case 'user_id' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
if($search_keyword) $search_keyword = trim($search_keyword);
$args->s_user_id = $search_keyword;
$args->sort_index = 'documents.'.$args->sort_index;
break;
case 'user_name' :
case 'nick_name' :
if($search_keyword) $search_keyword = trim($search_keyword);
$args->{"s_".$search_target} = $search_keyword;
break;
case 'email_address' :
case 'homepage' :
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);

View file

@ -15,9 +15,9 @@
<group pipe="and">
<condition operation="like" column="title" var="s_title" />
<condition operation="like" column="content" var="s_content" pipe="and" />
<condition operation="like" column="user_name" var="s_user_name" pipe="and" />
<condition operation="like" column="user_id" var="s_user_id" pipe="or" />
<condition operation="like" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="equal" column="user_name" var="s_user_name" pipe="and" />
<condition operation="equal" column="user_id" var="s_user_id" pipe="or" />
<condition operation="equal" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="email_address" var="s_email_address" pipe="or" />
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
<condition operation="like" column="tags" var="s_tags" pipe="or" />

View file

@ -16,9 +16,9 @@
<group pipe="and">
<condition operation="like" column="title" var="s_title" />
<condition operation="like" column="content" var="s_content" pipe="and" />
<condition operation="like" column="user_name" var="s_user_name" pipe="and" />
<condition operation="like" column="user_id" var="s_user_id" pipe="or" />
<condition operation="like" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="equal" column="user_name" var="s_user_name" pipe="and" />
<condition operation="equal" column="user_id" var="s_user_id" pipe="or" />
<condition operation="equal" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="email_address" var="s_email_address" pipe="or" />
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
<condition operation="like" column="tags" var="s_tags" pipe="or" />

View file

@ -19,9 +19,9 @@
<group pipe="and">
<condition operation="like" column="title" var="s_title" />
<condition operation="like" column="content" var="s_content" pipe="or" />
<condition operation="like" column="user_name" var="s_user_name" pipe="or" />
<condition operation="like" column="user_id" var="s_user_id" pipe="or" />
<condition operation="like" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="equal" column="user_name" var="s_user_name" pipe="or" />
<condition operation="equal" column="user_id" var="s_user_id" pipe="or" />
<condition operation="equal" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="email_address" var="s_email_address" pipe="or" />
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
<condition operation="like" column="tags" var="s_tags" pipe="or" />

View file

@ -23,9 +23,9 @@
<group pipe="and">
<condition operation="like" column="d.title" var="s_title" />
<condition operation="like" column="d.content" var="s_content" pipe="or" />
<condition operation="like" column="d.user_name" var="s_user_name" pipe="or" />
<condition operation="like" column="d.user_id" var="s_user_id" pipe="or" />
<condition operation="like" column="d.nick_name" var="s_nick_name" pipe="or" />
<condition operation="equal" column="d.user_name" var="s_user_name" pipe="or" />
<condition operation="equal" column="d.user_id" var="s_user_id" pipe="or" />
<condition operation="equal" column="d.nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="d.email_address" var="s_email_address" pipe="or" />
<condition operation="like" column="d.homepage" var="s_homepage" pipe="or" />
<condition operation="like" column="d.tags" var="s_tags" pipe="or" />

View file

@ -19,9 +19,9 @@
<group pipe="and">
<condition operation="like" column="title" var="s_title" />
<condition operation="like" column="content" var="s_content" pipe="or" />
<condition operation="like" column="user_name" var="s_user_name" pipe="or" />
<condition operation="like" column="user_id" var="s_user_id" pipe="or" />
<condition operation="like" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="equal" column="user_name" var="s_user_name" pipe="or" />
<condition operation="equal" column="user_id" var="s_user_id" pipe="or" />
<condition operation="equal" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="email_address" var="s_email_addres" pipe="or" />
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
<condition operation="like" column="tags" var="s_tags" pipe="or" />

View file

@ -22,9 +22,9 @@
<group pipe="and">
<condition operation="like" column="title" var="s_title" />
<condition operation="like" column="content" var="s_content" pipe="or" />
<condition operation="like" column="user_name" var="s_user_name" pipe="or" />
<condition operation="like" column="user_id" var="s_user_id" pipe="or" />
<condition operation="like" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="equal" column="user_name" var="s_user_name" pipe="or" />
<condition operation="equal" column="user_id" var="s_user_id" pipe="or" />
<condition operation="equal" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="email_address" var="s_email_address" pipe="or" />
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
<condition operation="like" column="tags" var="s_tags" pipe="or" />

View file

@ -24,9 +24,9 @@
<group pipe="and">
<condition operation="like" column="d.title" var="s_title" />
<condition operation="like" column="d.content" var="s_content" pipe="or" />
<condition operation="like" column="d.user_name" var="s_user_name" pipe="or" />
<condition operation="like" column="d.user_id" var="s_user_id" pipe="or" />
<condition operation="like" column="d.nick_name" var="s_nick_name" pipe="or" />
<condition operation="equal" column="d.user_name" var="s_user_name" pipe="or" />
<condition operation="equal" column="d.user_id" var="s_user_id" pipe="or" />
<condition operation="equal" column="d.nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="d.email_address" var="s_email_addres" pipe="or" />
<condition operation="like" column="d.homepage" var="s_homepage" pipe="or" />
<condition operation="like" column="d.tags" var="s_tags" pipe="or" />

View file

@ -5,7 +5,7 @@
</tables>
<columns />
<conditions>
<condition operation="like" column="member.user_id" var="s_user_id" notnull="notnull" pipe="and" />
<condition operation="equal" column="member.user_id" var="s_user_id" notnull="notnull" pipe="and" />
<condition operation="equal" column="documents.member_srl" var="member.member_srl" notnull="notnull" pipe="and" />
<condition operation="equal" column="documents.module_srl" var="module_srl" filter="number" pipe="and" />
<condition operation="equal" column="documents.category_srl" var="category_srl" pipe="and" />
@ -13,8 +13,8 @@
<group pipe="and">
<condition operation="like" column="documents.title" var="s_title" />
<condition operation="like" column="documents.content" var="s_content" pipe="or" />
<condition operation="like" column="documents.user_name" var="s_user_name" pipe="or" />
<condition operation="like" column="documents.nick_name" var="s_nick_name" pipe="or" />
<condition operation="equal" column="documents.user_name" var="s_user_name" pipe="or" />
<condition operation="equal" column="documents.nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="documents.email_address" var="s_email_address" pipe="or" />
<condition operation="like" column="documents.homepage" var="s_homepage" pipe="or" />
<condition operation="like" column="documents.tags" var="s_tags" pipe="or" />