[초성검색]

★개발일기★ ㅣ 2024. 5. 24. 18:19

반응형

 

한글의 우수성


한글은 너무 우수해서, 단어에 붙을 수 있는 조사가 너무 많기 떄문이다.
예를들면, 먹다, 먹었다, 먹어, 먹을까, 먹었니 등 수많은 가지 수가 있다.

또한 한글의 우수성 때문에 줄임말도 너무 많다. ( 별다줄 - 별걸 다 줄이네.. )


초성 검색

컴퓨터는 바보라서, ㅂㄹㄱ(블로그) 라고 했을 때, ㅂㄹㄱ 에 해당하는 단어를 모두 가져와 줘 라는 식의 명령을 내릴 수 없다.
즉 개발자인 우리가 그에 해당하는 알고리즘을 짜야한다.

그렇다면 코드를 어떻게 짜야 해당 단어에서 초성을 구할 수 있을까?

옜날 방식으로는 글자하나를 분해해서 저장하는 방식을 사용했으나.. 요즘에 그렇게 사용하면 욕먹는다.

자음을 구하려면 비효율적인 방법이지만 추론을 사용해야한다.

  • 1번 방식
const 글자 = '갑'
'가' <= 글자 && 글자 <= '깋'

위와 같다면 해당 글자의 초성은 'ㄱ' 이다.

혹은 글자를 유니코드 숫자로 변환 할 수 있는데,

'가'.charCodeAt(0)
//44032
'깋'charCodeAt(0)
//44619

const 글자유니코드 = '갑'.charCodeAt(0)
44032 <= 글자유니코드 && 글자유니코드 <= 44619

이런식으로도 표현 할 수 있다.

  • 2번 방식

정규식을 활용하는 방식이다.

//사용자의 입력 ㅁㄷ
//정규식
/[마-밓][다-딯]/.test()

 

데이터 베이스에서의 초성 검색

가장 좋은 방법은 데이터베이스의 단어의 초성을 저장해두는 방식이다. 

 

라이브러리 사용

https://www.slash.page/ko/libraries/common/hangul/README.i18n

반응형