Apache Solr 문서·필드·스키마
Apache Solr 문서·필드·스키마 (Documents, Fields, Schema Design)
Solr의 기본 개념은 단순해요. 많은 정보를 넣어두면, 나중에 질문해서 원하는 정보를 찾아주는 거예요. 정보를 넣는 과정을 인덱싱(indexing) 또는 업데이트라고 하고, 질문하는 과정을 쿼리(query) 라고 해요.
요리책에 비유하면 이해하기 쉬워요. 레시피를 추가할 때마다 책 뒤쪽의 색인(index)을 갱신하고, 재료와 페이지 번호를 적어둬요. 색인을 쓰면 전체 레시피를 하나하나 훑지 않고도 특정 재료가 들어간 레시피를 매우 빠르게 찾을 수 있어요. 컬럼 수가 많아질수록 색인의 위력이 커져요.
출처: https://solr.apache.org/guide/solr/latest/getting-started/documents-fields-schema-design.html
Solr이 세상을 보는 법
Solr의 기본 정보 단위는 문서(document) 예요. 문서는 어떤 것을 묘사하는 데이터의 집합이에요. 레시피 문서에는 재료, 조리법, 준비 시간 등을 담을 수 있고, 사람 문서에는 이름, 약력, 신발 사이즈 등을 담을 수 있어요.
문서는 필드(field) 로 구성돼요. 필드는 더 구체적인 정보 조각이에요. 신발 사이즈가 필드가 될 수 있고, 이름·성도 필드가 될 수 있어요.
필드는 다양한 종류의 데이터를 담을 수 있어요. 이름 필드는 텍스트(문자 데이터), 신발 사이즈 필드는 실수(6.0, 9.5 같은 값)일 수 있어요. 필드 정의는 유연하지만, 올바르게 정의하면 Solr이 데이터를 정확히 해석하고 사용자에게 더 나은 검색 결과를 줘요.
필드 타입
필드에 어떤 종류의 데이터가 들어있는지 필드 타입(field type) 으로 알려줘요. 필드 타입은 Solr이 해당 필드를 어떻게 해석하고 어떻게 쿼리할 수 있는지 결정해요.
string— 토큰화하지 않는 정확한 문자열.text_general— 표준 텍스트, 토큰화·소문자화.int,long,float,double— 숫자 타입.date— 날짜·시간.boolean— 참·거짓.- 동적 필드: 이름에
_s,_i,_txt같은 접미사로 매칭.
스키마
스키마(schema) 는 Solr이 입력 문서에서 어떻게 인덱스를 만들지 알려주는 곳이에요. 여기서 필드의 타입, 기본값, 인덱싱·저장 여부, 분석기 등을 정의해요. 문서를 추가할 때 Solr은 문서의 필드 정보를 가져와 인덱스에 추가하고, 쿼리할 때 신속하게 인덱스를 참조해요.
인덱스에 매칭되는 필드 이름이 스키마에 정의돼 있으면, 해당 필드의 분석 단계가 콘텐츠에 적용돼요. 스키마에 명시적으로 정의되지 않은 필드는 무시되거나, 이름이 매칭되는 동적 필드 정의에 매핑돼요.
좋은 스키마 설계의 핵심
- 조회·필터링·정렬에 쓰는 필드를 정확한 타입으로 정의해요.
- 검색어 정규화가 필요하면 텍스트 필드의 분석기를 알맞게 구성해요.
- 저장(stored)이 필요한 필드만 저장하고, 아닌 건 indexing만 해서 공간을 절약해요.
- 카디널리티가 높은 필드는 팩셋·정렬에 주의해요.