Zing은 4단계로 검색 결과를 생성합니다.

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기1분
  • 샤드 간에 문서를 나누고, 샤드 문서를 검색하고, 샤드 문서에 점수를 매기고, 점수를 인덱스로 병합하여 검색 결과를 생성합니다.

    Zing은 다음 4단계로 검색 결과를 생성합니다.
    1. 검색 가능한 문서를 인덱스 샤드로 나눕니다.
    2. 분할된 데이터베이스 문서를 검색하고 필터링합니다.
    3. 샤드 문서에 점수를 매깁니다.
    4. 분할된 데이터베이스 문서 점수를 인덱스에 병합합니다.

    1단계: 인덱스 분할된 데이터베이스로 검색 가능한 문서 나누기

    검색이 실행되면 시스템은 검색 가능한 모든 문서를 10개의 인덱스 샤드로 균등하게 나눕니다. 각 샤드에는 고유한 문서 목록이 있습니다.

    검색 효율성을 극대화하기 위해 시스템은 10개의 쿼리 스레드를 생성하여 각 인덱스 샤드를 동시에 검색합니다.

    그림 1. 인덱스 샤드로 문서 나누기
    시스템은 검색 가능한 모든 문서를 샤드 0에서 샤드 9까지 10개의 인덱스 샤드로 나눕니다.

    2단계: 분할된 데이터베이스 문서 검색 및 필터링

    각 쿼리 스레드는 분할된 문서 목록을 검색하여 검색 조건과 일치하는 문서를 식별합니다. 예를 들어 "wifi network"를 검색하면 시스템에서 "wifi"와 "network"가 모두 포함된 모든 문서를 특정 순서 없이 반환합니다.
    주:
    여러 단어로 검색하는 것은 AND 연산자로 연결된 여러 단일 단어 검색과 동일합니다. 예: [contains][wifi][AND][contains][network].

    쿼리 스레드는 일치하는 각 문서에 숫자 값(문서 ID)을 할당하여 고유하게 식별합니다. 다른 모든 문서는 무시됩니다.

    3단계: 분할된 문서 점수 매기기

    쿼리 스레드는 일치하는 분할된 문서 각각에 점수를 매깁니다 .

    그림 2. 쿼리 스레드 샤드 문서 검색, 필터링 및 점수 매기기
    시스템은 10개의 쿼리 스레드를 생성하여 분할된 문서를 검색, 필터링하고 점수를 매깁니다.

    4단계: 분할된 데이터베이스 문서 점수 병합 및 정렬

    시스템은 문서 점수를 단일 인덱스로 병합하고 가장 높은 문서 점수에서 가장 낮은 문서 점수로 문서를 정렬합니다. 문서 점수가 가장 높은 문서가 검색 쿼리와 가장 관련성이 높습니다.

    그림 3. 샤드 문서 점수 병합 및 정렬
    분할된 문서 점수를 병합하고 정렬합니다.