Vespa 스키마

Vespa 스키마 (Schema)

Vespa 스키마(schema)는 검색할 도큐먼트 타입과 필드, 그리고 검색 방식을 정의하는 핵심 설정이에요. 어플리케이션 패키지의 schemas/ 아래에 .sd 파일로 작성하고, 배포 시 반영돼요.

출처: https://docs.vespa.ai/en/schemas.html

기본 스키마

document 블록 안에 필드와 타입을 정의해요.

schema doc {

  document doc {

    field id type int {
      indexing: summary | attribute
    }

    field title type string {
      indexing: index | summary
      index: enable-bm25
    }

    field year type int {
      indexing: summary | attribute
    }
  }
}

indexing은 해당 필드를 어떻게 처리할지 정해요. index는 풀텍스트 검색용 역색인을 만들고, attribute는 정렬·집계·필터에 쓰는 메모리 기반 속성으로 만들어요. summary는 검색 결과에 포함시킨다는 뜻이에요.

도큐먼트 타입과 구조

여러 필드 외에도 중첩(구조형) 필드와 배열, 맵 같은 구조를 지원해요. struct, array<type>, map<key,value> 등을 필드 타입으로 쓸 수 있어요.

필드의 역할 구분

Vespa에서 같은 필드라도 용도에 따라 설정이 달라져요.

  • 검색(매칭)에 쓰려면 index
  • 정렬·필터·집계에 쓰려면 attribute
  • 결과에 표시하려면 summary
  • 랭킹 계산에 쓰려면 attribute (가속화)

검색과 랭킹의 요구가 다르므로, 성능을 고려해 필드를 설계하는 게 중요해요.

더 알아보기