1. Index
검색 가능한 콘텐츠를 저장하고 구성하는 핵심 구조이다. 데이터베이스의 테이블과 유사한 개념으로, 검색 대상이 되는 Documents와 그 구조를 정의한다. (인덱스 스키마)
- Fields: 문서의 속성을 정의
- 정의: 속성을 나타내는 Column 같은 개념
- 유형: String, Int, Double, Date, Vector ...
- 속성:
- Retrievable: 검색 결과에 해당 필드 값이 포함될지 여부 결정(기본값 true)
- Filterable: 해당 필드 기준으로 필터링 가능
- Sortable: 해당 필드 기준으로 정렬 가능
- Facetable: 해당 필드에 대한 패싯 탐색 가능
- Searchable: 전체 텍스트 검색 가능
- Documents: 실제 검색 가능한 데이터 항목
- 인덱스에 저장되는 개별 데이터 항목
- JSON 형식으로 표현됨
- 각 문서는 고유 Key를 가짐
- Scorers: 검색 결과의 관련성을 평가하는 알고리즘

2. Indexer
원본 데이터 소스에서 콘텐츠를 추출하여 인덱스로 가져오는 크롤러이다.
- Azure Blob Storage, SQL Database, Cosmos DB에서 데이터를 가져와 인덱스를 자동으로 업데이트 한다.
3. Skillset
AI 기술을 활용하여 원본 데이터를 처리하고 변환하는 기술의 모음이다.
- 텍스트 추출: PDF 문서에서 텍스트를 추출하는 스킬...
- 엔티티 인식
- 키 구문 추출
- 언어 감지
- 감정 분석
4. Data Source
검색 인덱스에 사용할 원본 데이터의 위치와 접근 방법을 정의한다.
- Azure Blob Storage: 비구조적 파일을 포함하는 데이터 원본
- Azure SQL Database: 구조화된 데이터 테이블
- Azure Cosmos DB: NoSQL 형식의 문서 데이터
- Azure Table Storage: NoSQL 형식의 키-값 저장소
- MySQL: 관계형 데이터베이스 관리 시스템
- PostgreSQL: 오픈소스 관계형 데이터베이스 관리 시스템
5. Query
검색 인덱스에서 정보를 검색하고 필터링하는 핵심 메커니즘이다.
- 단순 쿼리: 기본 쿼리 유형
- 전체 쿼리: Lucene 구분 분석기를 사용하여 고급 검색 기능 제공
- Lucene 분석기는 텍스트를 검색할 수 있는 토큰(token)으로 분할하고, 각 토큰을 정규화하여 검색 성능을 향상시킨다.
- 시멘틱 쿼리: 딥러닝 모델을 활용하여 관련성 높은 결과를 제공
6. Scoring
검색 결과의 우선순위를 매기는 메커니즘이다. 가장 적합한 항목이 상위에 나타나도록한다.
- 기본적으로 TF-IDF(Term Frequency-Inverse Document Frequency) 알고리즘을 기반으로 스코어를 계산한다.
- Term Frequency(TF): 특정 용어가 문서에 얼마나 자주 나타나는지
- Inverse Document Frequency(IDF): 해당 용어가 전체 인덱스에서 얼마나 희소한지
7. Autocomplete
자동완성은 사용자가 검색어를 입력하는 동안 검색어를 예측하고 제안하는 기능이다.
8. Paging
검색 결과를 페이지 단위로 나뉘어 반환하는 페이징 메커니즘이다.
- 기본 페이징
- $top: 한 페이지에 보여줄 결과 수를 정의합니다.
- $skip: 검색 결과에서 건너뛸 항목의 수를 지정합니다.
- 페이지 번호 기반 페이징
- 일반적으로 1부터 시작하며, 페이지 크기를 미리 설정하여 페이지당 항목 수를 결정한다.
- Continuation Token 기반 페이징
- 페이징을 위한 토큰을 사용하여 현재 위치를 추적하고, 다음 페이지 요청에서 현재 위치가 담긴 토큰을 전달하면 해당 토큰을 기준으로 다음 데이터를 반환한다.
https://learn.microsoft.com/ko-kr/training/modules/create-azure-cognitive-search-solution/