## 목차 ##



## 1. 솔라 아키텍처(Architecture) ##

1. Request Handler

사용자가 보내는 요청은 모두 Request Handler에 의해 처리된다. '검색(query)', '인덱스 수정(update)' 각각을 위한 RequestHandler가 존재한다.

REST API를 통해 solr에 요청을 보낼 때 URL 뒷부분이 s?query 혹은 s?update 인지에 따라 요청이 구분되고 각각의 핸들러에 요청이 전달된다.



2. Search Component

검색엔진이 제공하는 전체 기능을 조금 세부적으로 나누면 검색, 오타교정, 분류 등과 같이 나눌 수 있다. 각각의 일을 하는 모듈은 Java 프로젝트에서 각각의 클래스를 가진다. 이들 각각을 솔라 컴포넌트(Component)라 한다.

컴포넌트들은 Search Handler에 추가하여 사용하며 하나의 Search Handler에는 여러 컴포넌트들이 등록될 수 있다.



3. Query Parser

사용자가 던진 쿼리(검색어, 검색 문장)을 파싱하여 검색엔진이 이해할 수 있는 방식으로 변경한다.



4. Response Writer

검색엔진이 찾은 결과를 가지고 출력 형식(XML, JSON, CSV 등)에 맞는 객체들을 생성하는 컴포넌트이다.



5. Analyzer/Tokenizer

쿼리를 분석하고 공백을 기준으로 토크나이저(분리) 하는 모듈이다.



6. Update Request Processor

사용자가 솔라에 인덱스 업데이트 요청을 보내면 update request processor가 이를 처리한다. 필드 혹은 문서를 추가, 삭제, 수정하는 등의 작업을 한다.



## 2. 솔라 일반 용어(Terminology) ##

1. 인스턴스(instance)

실행중인 솔라를 인스턴스라 한다. 각각의 인스턴스는 솔라 홈(home directory)을 가진다. 또한 하나의 인스턴스는 여러개의 코어(core)를 가질 수 있다.



2. 코어(core)

한대의 서버에 여러 주제의 인덱스가 각각 있을 수 있다. 코어는 하나의 인덱스를 가리킨다. 예를들면 한 포털사이트에서 위치검색과 일반 웹문서 검색을 제공한다면 위치 색인, 웹문서 색인을 따로 가질 수 있다. 이를 각각 코어라고 부른다.



## 3. 솔라 클라우드 용어 ##

클라우드 환경에 여러 솔라 인스턴스를 실행시킬 수 있다. 클라우드에 색인 데이터를 분산저장(샤딩)하고 검색 처리작업도 각각의 서버에서 병렬로 수행할 수 있다.

실제 사용하면서 익숙해져야겠지만 나중에 기억이 나지않으면 찾아보기 위해 클라우드 환경에서 사용하는 용어들을 정리해봤다.



1. 노드(Node)

클라우드 환경 혹은 클러스터 환경에서 하나의 서버 컴퓨터 혹은 거기서 실행되는 하나의 솔라 인스턴스



2. 클러스터(Cluster)

모든 노드들이 더해져 구성하는 논리적인 컴퓨팅 환경. 즉, 노드들이 합쳐져 클러스터가 되는것이고 클러스터가 여러개의 노드로 구분되는 것이다.



3. 컬렉션(Collection)

하나의 논리적 인덱스를 구성하는 문서들. 인덱스랑 같다고 생각하면 된다. 검색포털의 경우 위치 컬렉션, 블로그 컬렉션 등으로 수많은 컬렉션을 가질 수 있다.



4. 샤드(shard)

색인이 분산 환경을 통해 여러대의 서버 컴퓨터에 분산되어 저장된 경우에는 색인 데이터가 여러 솔라 인스턴스에 분배되어 있다. 이 때 각각의 서버에 있는 부분 데이터를 샤드라 부른다. 또한 색인 데이터를 여러 서버 컴퓨터에 나누어 색인하는 작업을 샤딩(sharding)이라고 한다. 다시말하자면 전체 색인데이터의 subset이다.



5. 레플리카(replica)

데이터 유실을 방지하기 위해 하나의 샤드는 여러 서버에 복제되어 저장된다. 여기서는 원본과 복제본의 구분이 없다. 하나의 샤드가 여러 복제본(레플리카)로 여러 서버에 저장되어있다고 이해하면 된다. 일반적으로 2개 이상의 레플리카를 사용한다.



6. 리더(leader)

리더 서버로 요청이 들어오면 이 요청은 전체 클라우드에 뿌려지고 동시에 처리된다.



7. 주키퍼(zookeeper)

아파치 재단의 오픈소스 프로젝트로 클러스터에서 구성 서버들끼리 공유되는 데이터를 유지하거나 서로 조율하는 역할을 한다. 여러대의 서버로 구성된 솔라 클라우드의 관리자 역할을 한다.



## 4. 솔라 설정(Configuration) 파일 ##

직접 다루기 전까지는 몰라도 될 내용들이지만 정리해보자.



1. solr.xml

솔라 홈(solr home) 디렉토리에 있다. 솔라 클라우드에 관한 정보를 담고 있다. 솔라 인스턴스가 코어를 로드하기 위해 이 파일을 참고한다.



2. solrconfig.xml

하나의 코어마다 가지고 있으며 코어에 관한 설정 내용이 들어있다. 코어가 사용할 컴포넌트 지정, 출력형식 지정, 사용할 인덱스, 메모리 사용 등의 정보들이 들어있다.



3. schema.xml

코어의 인덱스가 가지는 필드, 타입 등에 관한 정의가 들어있다.



4. core.properties

아래의 내용들이 들어있다.

  • 코어 이름

  • 코어 초기화에 사용될 설정 파일 경로 지정(기본값으로 solrconfig.xml)

  • 코어가 사용할 schema 파일(기본값 schema.xml)

  • 사용할 인덱스 파일의 경로

  • 등등…

+ Recent posts