본문 바로가기
9. 프로젝트/└ 02. 홈페이지제작

[알고리즘] 한글 초성 인덱스로 검색하기(사전용)

by 훈킹 2008. 6. 15.
반응형
일단 인덱스 리스트에서...

list.php?i=a // 'a'로 시작하는 subject 검색
list.php?i=1 // '1'로 시작하는 subject 검색
list.php?i=ㄱ // 'ㄱ'으로 시작하는 subject 검색

이런식으로 검색할 인덱스를 넘겨 줍니다.
그런다음 검색할 인덱스($i)의 상태에 따라서 쿼리문을 만듭니다..
상당히 무슥하게 하나씩 처리해 주었는데... ㅡㅡ;;
한글의 경우 별다른 방법이 없을듯 하구요..
주석은 간단하게 달았습니다...

ex> 마지막 'ㅎ'에 대해서 처리하는것
'ㅎ'은  그냥 '하' 이후의 모든 값을 가져오도록 하였습니다. ㅡㅡ;;

-----------------------------------------------------------------------------------
// 검색할 인덱스가 숫자이거나 영문자라면..
if( preg_match( "/[0-9a-zA-Z]/", $i ) )
{
// 매우 단순 간단한 정규식 검색....
$query    = "select subject from table_name where subject RLIKE '^$i' order by subject";
}
else if( "ㄱ" == $i ) // 'ㄱ'으로 시작하는 subject 검색
{
$query    = "select subject from table_name
where subject RLIKE '^(ㄱ|ㄲ)'
OR ( subject >= '가' AND subject < '나' )
order by subject";
}
else if( "ㄴ" == $i ) // 'ㄴ'으로 시작하는 subject 검색
{
$query    = "select subject from table_name
where subject RLIKE '^ㄴ'
OR ( subject >= '나' AND subject < '다' )
order by subject";
}
...
...
// 중간 생략.. 'ㄱ', 'ㄲ' 같이 쌍자음(이거 제대로된 명칭이 모죠?? ㅡㅡ;; ) 만 주의하면 됩니다.
...
...
else if( "ㅎ" == $i )
{
$query    = "select subject from table_name
where subject RLIKE '^ㅎ' OR subject >= '하'
order by subject";
}

// get list data && print list
$result    = mysql_query( $query ) or die( "mysql query error - $query<br>" );
while( $row = mysql_fetch_array( $result, MYSQL_ASSOC ) )
{ echo htmlspecialchars( stripslashes( $row[subject] ) ) ."<br>";    }
------------------------------------------------------------------------------------
반응형