피드로 돌아가기
Dev.toBackend
원문 읽기
SymSpell 도입으로 오타 교정 지연시간 80ms에서 0.1ms로 단축
Spelling correction at scale: Levenshtein distance, BK-trees, and symmetric deletion
AI 요약
Context
20만 개 이상의 단어를 포함한 Dictionary 환경에서 Levenshtein distance 기반의 Brute Force 검색 방식 적용. 전수 조사를 통한 $O(N)$ 복잡도로 인해 실시간 Search-as-you-type 인터페이스 구현 시 심각한 Latency 발생.
Technical Solution
- Triangle Inequality를 활용한 BK-Tree 구조 도입으로 불필요한 서브트리 탐색을 제외하는 Pruning 전략 수행
- Metric-space Indexing을 통한 탐색 범위 축소로 계산 복잡도 개선
- Runtime 계산 비용 제거를 위해 Edit Distance 2 이내의 모든 삭제 조합을 Pre-compute 하는 Symmetric Delete 방식 채택
- 생성된 모든 변형 단어를 Hash Map에 저장하여 런타임 시 $O(1)$ 수준의 Key-value Lookup으로 전환
- Tree Traversal 비용을 메모리 공간으로 대체하는 Space-Time Trade-off 설계 적용
실천 포인트
- 데이터 규모가 작고 메모리 효율이 중요하다면 BK-Tree 검토 - 초저지연 응답이 필수적인 고트래픽 서비스라면 SymSpell의 Pre-computation 전략 적용 - Edit Distance 임계값 설정에 따른 메모리 사용량 증가분 사전 계산 필요