한글 초성 추출 방법과 검색 최적화 활용
유니코드 기반 한글 초성 추출 원리를 설명하고, 초성 검색 기능 구현 방법과 SEO·UX 활용 전략을 안내합니다.
Q.한글 초성을 프로그래밍으로 추출하는 방법은 무엇인가요?
한글은 유니코드 44032(가)부터 55203(힣)까지 배치되어 있습니다. 초성 추출 공식은 (유니코드 코드포인트 - 44032) ÷ 588의 정수 부분입니다. Python에서는 `(ord(char) - 44032) // 588`로 초성 인덱스를 구하고, 초성 리스트 `['ㄱ', 'ㄲ', 'ㄴ', ...]`에서 해당 인덱스를 참조하면 됩니다.
네이버 모바일 앱에서 "ㄱ"만 입력해도 "국밥", "강남역", "경복궁"이 자동완성으로 뜬다. 이 초성 검색이 작동하려면 각 단어의 초성을 미리 추출해 인덱싱해야 한다. 많은 개발자가 복잡하게 생각하지만, 유니코드 수식 하나로 해결된다.
한글 유니코드 구조
한글 완성형 문자는 유니코드 코드포인트 44032(가)부터 55203(힣)까지 11,172자가 연속 배치되어 있다. 각 문자는 다음 수식으로 분해된다.
코드포인트 = 44032 + (초성 인덱스 × 588) + (중성 인덱스 × 28) + 종성 인덱스
초성은 19개, 중성 21개, 종성 28개(받침 없음 포함)로 19 × 21 × 28 = 11,172자다.
초성 추출 코드
python
CHOSUNG = ['ㄱ','ㄲ','ㄴ','ㄷ','ㄸ','ㄹ','ㅁ','ㅂ','ㅃ',
'ㅅ','ㅆ','ㅇ','ㅈ','ㅉ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ']
def get_chosung(char):
code = ord(char)
if 44032 <= code <= 55203:
return CHOSUNG[(code - 44032) // 588]
return char # 한글이 아닌 경우 그대로 반환
def text_to_chosung(text):
return ''.join(get_chosung(c) for c in text)
# 사용 예
print(text_to_chosung("서울특별시")) # ㅅㅇㅌㅂㅅ
print(text_to_chosung("텍스터브")) # ㅌㅅㅌㅂ
초성 검색 구현
python
def search_by_chosung(query, items):
# query가 초성만으로 구성된 경우
if all(c in 'ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ' for c in query):
return [item for item in items
if text_to_chosung(item).startswith(query)]
# 일반 검색
return [item for item in items if query in item]
실무 활용 사례
- 자동완성: 검색창에 초성 입력 시 후보 목록 표시
- 정렬: 가나다 순 정렬 시 초성 기준으로 그룹화
- 색인(Index): 전화번호부 또는 사전 앱의 인덱스 탭 구성
---
이 글은 AI가 공개 자료를 기반으로 작성했습니다. 초성 추출은 완성형 한글(가-힣)에만 적용됩니다.