Tantivy 스키마 — 필드 타입과 옵션

Tantivy 스키마

Tantivy에서 문서를 넣기 전에 스키마를 정의해야 해요. 스키마는 인덱스에 들어갈 필드 집합이고, 각 필드는 데이터 타입과 검색·저장 방식을 결정하는 옵션을 가져요. Schema::builder()로 시작해 필드를 추가하고 build()로 확정해요.

필드 옵션

텍스트 필드의 대표 옵션은 크게 두 가지예요.

  • TEXT — 필드를 토큰화하고 역색인하며, term frequency와 term positions까지 저장
  • STORED — 필드를 압축된 행 단위 키-값 저장소에도 저장. 검색에서 선택된 문서를 재구성할 때 필요

STORED만 붙이면 저장만 하고 검색 인덱스에는 넣지 않을 수도 있어요. 예를 들어 본문은 TEXT로 검색하고, 결과에 원문을 보여줘야 하는 제목은 TEXT | STORED로 하면 돼요.

let title = schema_builder.add_text_field("title", TEXT | STORED);
let body = schema_builder.add_text_field("body", TEXT);
let schema = schema_builder.build();

필드 타입

텍스트 외에도 Tantivy는 i64, u64, f64(fast field로 열 지향 저장), 날짜, IP, 부울, 그리고 계층적 패싯(facet) 필드를 지원해요. 패싯 필드는 category=/books 같은 계층 구조로 필터링할 때 쓰여요.

더 알아보기