Skip to content

Commit

Permalink
fix : fix some contents
Browse files Browse the repository at this point in the history
  • Loading branch information
sungjindev committed Feb 16, 2024
1 parent fb39761 commit 7b99634
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion _posts/2024-02-14-spring-redis-autocorrect1.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ tags: [backend, spring, java, redis, autocorrect, autocomplete, 백엔드, 스

우선 **첫째로, 모든 단어들을 음절 단위로 쪼개놓았기 때문에 불완전한 형태의 키워드들이 함께 조회**됩니다. 예를 들어 '아이폰'이라는 값이 조회 대상으로 DB에 저장되어 있어서 이를 음절 단위로 쪼개 모두 저장한다고 치면 [아, 아이, 아이폰] 이런 식으로 쪼개져 저장될 것입니다. 이때 사용자가 '아'까지만 검색한다면 '아', '아이', '아이폰'이 모두 자동 완성 검색어로 노출될 것입니다. '아'가 노출되서는 안된다는 것은 너무나 자연스럽게 이해가 되지만 '아이'가 노출되는 것은 괜찮지 않느냐라고 생각하실 수도 있습니다. 하지만 '아이'는 자동 완성으로는 노출되서는 안되는 키워드입니다.

왜냐하면 처음 DB에 저장되어 조회 대상이 되었던 이름은 '아이폰'이었고 이 '아이폰'의 '아이'라는 글자와 '아이'라는 단어만 놓고 봤을 때 바로 떠오르는 단어와는 관련이 없기 때문입니다. 물론 '아이폰'이라는 키워드 외에 다른 단어들과 같은 경우, 특히 합성어 같은 경우에 음절 단위로 끊어 단어의 일부분만 잘라봤을 때 말도 되고 기존 단어와 문맥도 일치하는 단어가 존재할 수도 있습니다만 이 부분까지 고려하기에는 생각해야되는 부분이 너무 많아지기 때문에 저는 **처음 조회 대상이 되는 완벽한 단어만 자동 완성 키워드로 노출되도록 설정**해줄 것입니다. 이 로직은 완벽한 단어 뒤에 '\*'과 같은 문자를 두어 힘께 저장하고 추후에 비즈니스 로직에서 '\*'가 포함되어 있는 단어만 자동 완성 검색어로 노출시켜주는 방식으로 간단히 구현할 수 있습니다.
왜냐하면 처음 DB에 저장되어 조회 대상이 되었던 이름은 '아이폰'이었고 이 '아이폰'의 '아이'라는 글자와 '아이'라는 단어만 놓고 봤을 때 바로 떠오르는 단어와는 관련이 없기 때문입니다. 물론 '아이폰'이라는 키워드 외에 다른 단어들과 같은 경우, 특히 합성어 같은 경우에 음절 단위로 끊어 단어의 일부분만 잘라봤을 때 말도 되고 기존 단어와 문맥도 일치하는 단어가 존재할 수도 있습니다만 이 부분까지 고려하기에는 생각해야되는 부분이 너무 많아지기 때문에 저는 **처음 조회 대상이 되는 완벽한 단어만 자동 완성 키워드로 노출되도록 설정**해줄 것입니다. 이 로직은 완벽한 단어 뒤에 '\*'과 같은 문자를 두어 함께 저장하고 추후에 비즈니스 로직에서 '\*'가 포함되어 있는 단어만 자동 완성 검색어로 노출시켜주는 방식으로 간단히 구현할 수 있습니다.

**둘째로, 음절 단위로 저장된 데이터 간의 경계값에 주의해야된다는 점**입니다. 보통 이런 자동 완성 기능을 구현하게 되면 최대 자동 완성 검색어 노출 개수를 지정해서 노출하게 될텐데 아무리 오름차순으로 데이터가 정렬되어 있다고 하더라도 Limit 이내에 완전 다른 뜻을 가지는 경계값과 같은 단어가 뒤이어 존재하게 되면 어색한 검색어 예측을 하게 됩니다. **이런 단어들이 사용자에게 노출되면 사용자는 당연하게도 검색어 자동 완성 기능에 신뢰를 잃게 될 것**입니다. 이를 막기 위해서 다양한 방식이 사용될 수 있지만, 저는 가장 심플하게 **사용자가 입력한 검색어가 포함되는 경우에만 자동 완성 검색어로 노출**될 수 있도록 구현할 계획입니다.

Expand Down

0 comments on commit 7b99634

Please sign in to comment.