Zing은 4단계로 검색 결과를 생성합니다.
샤드 간에 문서를 나누고, 샤드 문서를 검색하고, 샤드 문서에 점수를 매기고, 점수를 인덱스로 병합하여 검색 결과를 생성합니다.
Zing은 다음 4단계로 검색 결과를 생성합니다.
- 검색 가능한 문서를 인덱스 샤드로 나눕니다.
- 분할된 데이터베이스 문서를 검색하고 필터링합니다.
- 샤드 문서에 점수를 매깁니다.
- 분할된 데이터베이스 문서 점수를 인덱스에 병합합니다.
1단계: 인덱스 분할된 데이터베이스로 검색 가능한 문서 나누기
검색이 실행되면 시스템은 검색 가능한 모든 문서를 10개의 인덱스 샤드로 균등하게 나눕니다. 각 샤드에는 고유한 문서 목록이 있습니다.
검색 효율성을 극대화하기 위해 시스템은 10개의 쿼리 스레드를 생성하여 각 인덱스 샤드를 동시에 검색합니다.
2단계: 분할된 데이터베이스 문서 검색 및 필터링
각 쿼리 스레드는 분할된 문서 목록을 검색하여 검색 조건과 일치하는 문서를 식별합니다. 예를 들어 "wifi network"를 검색하면 시스템에서 "
wifi"와 "network"가 모두 포함된 모든 문서를 특정 순서 없이 반환합니다.주:
여러 단어로 검색하는 것은 AND 연산자로 연결된 여러 단일 단어 검색과 동일합니다. 예: [contains][wifi][AND][contains][network].
쿼리 스레드는 일치하는 각 문서에 숫자 값(문서 ID)을 할당하여 고유하게 식별합니다. 다른 모든 문서는 무시됩니다.
3단계: 분할된 문서 점수 매기기
쿼리 스레드는 일치하는 분할된 문서 각각에 점수를 매깁니다 .
4단계: 분할된 데이터베이스 문서 점수 병합 및 정렬
시스템은 문서 점수를 단일 인덱스로 병합하고 가장 높은 문서 점수에서 가장 낮은 문서 점수로 문서를 정렬합니다. 문서 점수가 가장 높은 문서가 검색 쿼리와 가장 관련성이 높습니다.