모의 설계 인터뷰 - 검색 엔진

inhalin·2023년 4월 12일
0

서비스 소개

  • 검색 엔진 (e.g. 구글)
    • 기존에 설계한 웹 크롤러 기반으로 설계

Q&A

  • 결과의 합리적 기준이란?
    • 아무 뜻 없이 키워드만 반복 X
    • 검색자가 찾는 정보를 주는 결과 O
  • 그건 어떻게 측정하나?
    • 페이지를 보고 돌아오면 원하는 결과 못 얻음
    • 검색 결과 클릭 안하면 쓸모없는 결과
  • 결과 페이지와 카워드 간 관련성 측정 방법
  • 어떤 알고리즘으로 순위 매길건지?

시스템 설계

검색 알고리즘

  • TF-IDF
    • 문서 내 용어의 빈도 / 전체 문서에 나온 해당 용어의 빈도 = 해당 문서에서 용어의 특별함 정도(measure of how "special" that term is to that document)
    • 전체 웹 검색에 사용시 문제점
      • 원하는 키워드가 상대적으로 적으면 무조건 끝남
      • 연산 과정에서 인터넷 전체에 대한 문서 빈도 연산이 사실상 불가능
  • 관련성 정도에 따라 키워드를 관련 문서 목록에 매핑하는 inverted index 필요
  • 페이지 랭크를 사이트의 인기도 척도로 이용
    • 문서 내 키워드의 위치 - 앞쪽일수록 관련성 높음
    • 굵거나 큰 글씨, 페이지의 제목
    • 문서의 길이 및 문서 내 키워드 빈도수
    • 키워드만 있고 다른 내용 없는건 순위 X

데이터 추출 및 저장

  • 크롤러에서 받아온 웹페이지 저장소 -> 압축된 형태임
  • index 구축 - key/value store
    • key => 키워드 또는 키워드의 id
    • value => 문서, 발견 위치, 헤더/제목 여부 등등
    • BigTable
  • inverted index 만들기
    • MapReduce / Apache Spark

추가정리

  • TF-IDF
  • BigTable
  • 아파치 스파크

0개의 댓글