Documents, Fields, and Schema Design 소개
Solr의 기본 전제조건은 아주 간단합니다. Solr에 많은 정보를 입력한다면, 질문을 하거나 당신이 원하는 정보의 조각을 찾을 수 있죠. 정보를 입력하는걸 indexing(인덱싱, 색인)이나 update(업데이트, 갱신)라고 부릅니다. 당신이 질문을 하는건 query(쿼리, 질의)라고 부르죠.
Solr가 작동하는 방식을 이해하는 방법 중에 하나는 바인더식 요리책자를 떠올리는겁니다. 책자에 새 요리법을 꽂아넣을 때마다, 각각의 재료랑 방금 추가한 페이지의 번호를 목록으로 만들어서 목차를 갱신합니다. 100개의 요리법을 넣었다고 가정해보죠. 목차를 이용한다면 재료를 이용해서 매우 빠르게 요리법을 찾아낼 수 있습니다. 목차를 이용하는게 요리법 하나하나 뒤져보는 것보다 훨씬 빠른 방식이니까요. 감이 잘 안오시나요? 요리법이 1000개일 땐 어떨까요, 100만개라면요?
Solr는 서로 다른 Field나, 항목의 종류를 이용해서 목차를 만들어줍니다. 위의 예는 하나의 Field, 재료로 목차를 어떻게 만드는지 보여줍니다. 중식, 일식, 채식처럼 조리법에 따라 다른 Field를 만들수도 있고, 조리시간에 따른 Field를 만들 수도 있죠. Solr는 "오리를 갖고 30분 안에 만들 수 있는 중식은 뭐가 있니?"라는 질문에 답을 드릴겁니다.
Schema는 입력된 문서에서 Solr가 목차를 만드는 방법이 적힌 장소입니다.
Solr가 세상을 보는 방법
Solr의 가장 기본적인 정보의 단위는 무언가가 쓰여진 자료의 모음인 문서입니다. 요리법 문서는 재료나 조리법, 준비 시간, 조리 시간, 필요한 도구 같은 정보를 담고 있죠. 어떤 사람에 대한 문서를 예로 들자면 이름, 약력, 좋아하는 색깔, 발 사이즈가 쓰여있을겁니다. 책에 대한 문서라면 제목과 작가, 출판연도, 쪽수 같은 정보가 들어있겠죠.
Solr의 세계에서는 문서는 특정된 정보의 조각인 Field로 구성되어 있습니다. 발 사이즈는 Field가 될 수 있습니다. 성과 이름도 Field가 될 수 있죠.
Field들은 서로 다른 종류의 자료를 담을 수 있습니다. 예를 들어보면 이름 Field는 문자열입니다. 발 사이즈는 240mm나 280mm처럼 정수로 표현할 수 있겠죠. 물론 Field의 종류는 정하기 나름입니다. (발 사이즈를 정수가 아니라 문자열이라고 지정할 수도 있습니다.) 하지만 만약 Field의 종류를 정확히 지정한다면, Solr는 Field를 더 정확하게 해석할거고 사용자들에게 더 나은 검색결과를 제공할 수 있습니다.
당신은 각 Field Type을 지정함으로서 Solr에게 그 Field가 어떤 종류의 데이터를 가지고 있는지 알려줄 수 있습니다. Field Type은 Solr에게 이 Field를 어떻게 해석해야하는지, 어떻게 질의될 수 있는지를 알려주죠.
새 문서를 추가할 때, Solr는 문서에 대한 Field들을 통해 정보를 얻고 목차에 추가합니다. 그리고 질의할 때, Solr는 빠르게 목차를 살펴보고 일치하는 문서를 돌려주죠.
Field Analysis
Field Analysis은 목차를 만들 때 들어오는 자료로 무엇을 할지를 Solr에게 알려주는 일을 말합니다. 이 과정에 대한 더 정확한 명칭은 처리나 소화가 되겠지만 공식적 명칭은 Analysis입니다.
예를 들어서 사람에 대한 문서에서 약력 Field를 떠올려보세요. 약력에 대한 모든 단어는 케챱이나 잠자리나 암호학과 관련된 삶을 산 사람을 빠르게 찾을 수 있도록 색인되어야 합니다.
하지만 약력은 당신이 관심 없거나 목차를 꽉 채워버리길 원치 않는 단어(이, 그, 저 같은)도 가지고 있습니다. 게다가 약력에 첫 글자가 대문자인 "Ketchup"이 포함되어 있다고 생각해보세요. 당신은 아마 "ketchup"에 대해 질의하더라도 Solr가 첫 글자가 대문자인 단어를 포함한 약력을 가진 그 사람을 찾아주길 원할겁니다.
저 두 문제에 대한 해답이 Field Analysis입니다. 약력 Field를 위해서 Solr에게 어떻게 약력을 단어들로 쪼개야 하는지 알려줄 수 있습니다. Solr에게 모든 단어를 소문자로 만들라거나 특수문자를 지우라고 말해줄 수도 있죠.
Field Analysis는 Field Type의 중요한 부분입니다. Analyzer와 Tokenizer, Filter에 대한 이해에서 Field Analysis를 더 자세히 설명합니다.
Solr의 Schema 파일
Solr는 Field Type에 대한 자세한 내용과 이해하길 원하는 Field를 Schema 파일에 담고 있습니다. 이 파일의 이름과 위치는 초기 설정을 어떻게 하는지나 나중에 어떻게 변경하는지에 달려있습니다.
- schema.xml는 Schema 파일의 전통적인 이름입니다. 이 가이드에서도 여전히 Schema를 schema.xml이라고 부릅니다.
- 만약 Managed-schema 기능이 활성화 되었다면 Schema 파일의 이름은 Managed-schema가 됩니다. 이 기능은 Schema API를 통해 Schema를 다룰 수 있도록 해주죠. 당신이 지정한다면 다른 이름을 사용할 수도 있습니다. 하지만 예제로 제공되는 구성 중 하나에서 Solr를 실행하면 이 이름이 사용 중인걸 볼 수 있습니다.
- 만약 SolrCloud를 사용한다면 로컬 파일시스템에서 Schema 파일을 찾을 수 없을겁니다. Solr Admin UI의 클라우드 화면이나 (활성화 한 경우) Schema API를 통해서만 Schema를 볼 수 있습니다.
설치에 어떤 이름이 사용되더라도 파일의 구조는 바뀌지 않습니다. 하지만 파일에 접근하는 방식은 바뀔 것입니다. 만약 Managed Schema를 사용한다면 파일과 Schema API를 통해서만 접근할 수 있고 수동 변경은 없을 것입니다. 반대로 Managed Schema를 사용하지 않는다면 Schema API는 사용하지 않고 수동 변경만 하겠죠.
만약 SolrCloud를 사용하는데 아직 Schema API를 사용하지 않는다면, schema.xml 파일을 편집하기 위해서 ZooKeeeper의 upconfig와 downconfig 명령을 사용해서 로컬 복사본을 만들고 변경사항을 업로드 해야합니다. 더 자세한 내용은 Solr Start Script Reference와 설정 파일 편집을 위한 ZooKeeper 사용을 참고하세요.
오탈자와 오역은 댓글을 달아주세요. (Apache Solr 5.5 가이드 번역에 관하여...)