Skip to content

검색 자동완성 품질 개선 — 어절 중간 매칭·키보드 접근성·후보 정렬 #322

Description

@GulSam00

#320 후속. 당장 깨지진 않지만 자동완성 체감 품질을 낮추는 항목들.
결함 3건(#321)과 달리 각각 독립적이라 나눠서 처리해도 된다.

④ 어절 중간으로는 검색되지 않는다

apps/web/src/utils/getArtistAlias.ts:58 의 필터가 라벨 전체 접두만 본다.

"미세스"    -> 미세스 그린 애플 ✅
"그린 애플" -> (없음)          ❌

한 명의 이름이 여러 어절인 경우("미세스 그린 애플", "라르크 앙 시엘",
전사된 일본 아티스트 대부분의 "성 이름")에 두 번째 어절로는 못 찾는다.
어절 단위 접두 매칭(공백으로 쪼갠 각 토큰의 시작을 비교)이면 해결된다.
includes 는 관련 없는 후보를 끌어오므로 쓰지 않는다.

⑤ 키보드로 후보를 고를 수 없다

apps/web/src/app/search/SearchAutocomplete.tsx

  • ↑/↓ 로 후보 이동 불가 — 엔터는 항상 입력 원문으로 검색된다
  • role="listbox" / role="option" / aria-expanded / aria-activedescendant 없음
  • 현재 마우스 클릭 전용이라 키보드·스크린리더 사용자는 자동완성을 쓸 수 없다

입력창(HomePage.tsx:314 부근)의 onKeyUp 엔터 처리와 함께 봐야 한다 —
목록이 열려 있고 활성 후보가 있으면 엔터는 그 후보를 선택해야 한다.

⑥ 후보를 정렬 없이 사전 등록 순서로 자른다

apps/web/src/utils/getArtistAlias.ts:63.slice(0, 10) 이 잘라내는 기준이
artistAlias 객체의 선언 순서다. 입력과의 관련도와 무관하다.

제안 정렬: 정확 일치 → 라벨 길이 짧은 순 → 공식 명칭 우선.
#321 ③(중복 제거)에서 "어떤 라벨을 남길지" 판단에도 이 순서를 쓴다.

작업 체크리스트

  • 어절 단위 접두 매칭
  • ↑/↓ 키 내비게이션 + 엔터로 활성 후보 선택
  • listbox/option ARIA 속성
  • 후보 정렬 기준 적용

참고

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions