티스토리 뷰

BackEnd/기타

SOLR 검색엔진이란?

Fathory 2019. 6. 10. 09:05
반응형

1. Solr 검색엔진이란?

  • Solr ("solar"라고 읽는다.)는 오픈소스 기반의 검색 플랫폼이다. 아파치 Lucene 프로젝트에서 파생되었으며, 자바언어로 작성되었다.
    주요 특징은 full-text 검색, 조회 수에 따른 하이라이팅, 패싯 검색1, 실시간 인덱싱, 동적 클러스터링, 데이터베이스 통합, NoSQL의 기능, 다양한 문서(word, PDF 등)를 핸들링 하는 것이다.
    분산 검색 및 인덱스 복제를 지원하며, 확장성과 내결함성을 위하여 설계되었다.
    Solr는 검색과 분석을 위하여 폭넓게 활용할 수 있으며, 개발 커뮤니티를 통해 계속적으로 업데이트 되고있다.
  • Solr는 독립적인 Full-text 검색 서버로 실행된다. 루씬의 자바 검색라이브러리를 사용하여 full-text 인덱싱과 검색을 지원한다. 또한, REST와 유사한 HTTP/XML, JSON API를 사용하기 때문에, 대부분의 프로그래밍 언어에 활용할 수 있다.
    Solr의 외부설정을 사용하면, JAVA 코딩 없이 사용하고자 하는 응용프로그램에 적용할 수 있으며, 고급사용자정의를 지원하는 플러그인 아키텍처가 있다.
  • Lucene과 solr는 모두 Apache Software Foundation 개발팀에서 기획되었고, 2010년에 병합되었다. 현재는 Lucene/Solr 또는 Solr/Lucene으로 부른다.

2. Solr 검색엔진을 사용할 때, 필수적으로 알아야 할 용어

  • 일반

     

    용어 내용
    Auto-warming olr에서 어떤 작업이 처리가 되면 (새로운 Searcher가 생성되는 처리) 새로운 캐시를 생성하고 
    기존 캐시로 부터 많이 사용된 키들을 기반으로 새로운 캐시에 key/value 쌍으로 추가하는 작업을 의미한다.
    Facet 검색 결과에 대한 분류. 검색 결과를 세분화하여 검색할 수 있도록 분류를 만드는 것.
    Field Collapsing 검색 결과를 특정한 필드의 값으로 그룹화 하는 것. 
    예를 들면 "스마트폰"을 검색했을 때, 가격대별로 그룹화 하여 보여줄 수 있다.
    Filter 검색결과를 필터링하는 것으로 검색 Score에 영향을 주지 않으면서 결과에서 특정한 데이터를 제외하는데 사용한다. 
    fq 파라미터를 이용하여 설정한다.
    Core 모든 Solr 설정과 함께하는 루씬 인덱스의 실행중인 인스턴스. 단일 Solr 어플리케이션은 isolation 아래에 0 또는 더 많은 코어를 가지지만, 
    각자가 필요에 따라 CoreContainer를 통해 커뮤니케이션을 할 수 있다.
    NRT Near Real Time 의 약자이다. 즉 문서가 추가/변경/삭제가 되었을 때 지연을 최소화하여 
    클라이언트에 보여줄 수 있도록 하는 것을 의미한다. 주로 Soft Commit 과 연관되어 이해가 필요하다.
    Request Handler Solr에서 외부로 요청을 처리하는 모든 핸들러. solrconfig.xml파일에 정의되어 있다.
    QTime Solr 엔진이 쿼리를 처리하는데에 소요한 시간을 밀리초 단위로 보여준다.
    Query Parser 검색을 처리하기 위하여 전달받은 쿼리에서 검색어와 그에 연관된 파라미터들을 파싱하는 컴포넌트
    Searcher SolrIndexSearcher의 인스턴스를 의미한다. 인덱스에 대한 검색을 수행하며, 여러가지 캐시들을 관리한다.
    Solr Home Dir Solr의 구성파일, 데이터, 플러그인 등을 찾는 기준디렉토리를 의미한다. 
    Solr 를 실행할 때 “-Dsolr.solr.home=<path of solr home directory>” 속성을 통해서 지정할 수 있으며, 기본값은 ./solr 이다.
    Static Warming Solr의 QuerySenderListener 클래스가 수신하는 “newSearcher” 나 “firstSearcher” 이벤트가 발생했을 때 
    강제로 Query를 수행하여 캐시가 준비될 수 있도록 solrconfig.xml 에 정의한 질의이다.
    즉, Auto-Warming 이 기존 Searcher의 캐시를 기준으로 하는 것에 반해서 Static Warming은 이전 Searcher와는 상관없이 
    Searcher가 생성되는 경우에 무조건 필요한 캐시를 준비할 수 있도록 필요한 질의를 내부적으로 처리하는 것이다.
  • SolrCloud
    용어 내용
    SolrCloud Solr 에서 제공하는 분산 기능을 의미하고 고 가용성과 장애 복구 및 분산 인덱싱과 검색을 제공하는 아키텍처
    Cluster 클러스터는 Solr를 구성하는 모든 노드들의 집합을 의미한다 단일 scheme.xml과 solrconfig.xml을 공유한다.
    Node 노드는 클러스터에 포함되는 각 논리적 서버(Solr 가 서비스되는 JVM 인스턴스 단위)를 의미한다. 
    서버 하나에 한 개 또는 그 이상의 노드가 존재할 수 있다.
    Partition 정한 단위 (일반적으로 Hash 기준으로 묶어서 처리) 로 분리한 하위 집합을 의미한다. 
    일반적인 DB에서 테이블 하나를 여러 개의 세그먼트로 나누는 것과 같다.
    Collection 컬랙션은 SolrCloud 클러스터에서 관리되는 논리적인 인덱스를 의미한다. 
    이 컬랙션은 하나 또는 그 이상의 Shard로 구성되고 설정 세트(Config Set) 와 연관되어 있다.
    이 때 하나 이상의 Shard로 구성된 것을 분산 인덱스라고 한다. 
    보통은 이 컬랙션의 이름을 참조해서 분산 검색에 필요한 각 Shard에 대한 관리용 파라미터로 사용한다.
    Config Set 코어가 정상적으로 동작하는데 필요한 파일들을 의미한다. 
    각 설정 세트는 식별하기 위한 이름을 가지고, 최소 구성은 schema.xml 과 solrconfig.xml 이지만 
    구성되는 내용에 따라서 추가적인 파일들이 존재할 수도 있다.
    이 설정 세트는 ZooKeeper에 저장되고 ZooKeeper Command Line Interface 를 통해서 관리하거나 
    Solr를 시작할 때 bootstrap_confdir parameter 를 지정할 수도 있다.
    Core 코어는 일반적으로 Lucene Index 를 실행하기 위한 구성 (schema.xml, solrconfig.xml) 을 가지고 서비스를 하는 인스턴스를 의미한다. 
    보통 단일 Solr 어플리케이션은 0 또는 복수의 코어를 구성할 수 있으며, 각 코어는 독립적으로 실행된다.
    경우에 따라서 CoreContainer를 통해서 각 코어간에 통신을 할 수는 있다.
    Leader Shard 구성에 존재하는 다른 복제본들을 관리하는 기능을 수행한다. 
    따라서 문서가 인덱스되면 SolrCloud는 Shard 구성의 리더에게 관련된 정보를 전달하고 리더는 다른 모든 복제본들에 배포를 하게 된다.
    Replica Shard의 복사본으로 각 복제본은 Solr 의 코어로서 존재한다. 
    numShards=1일 때, replicaFactor가 2로 지정되어있으면 2개의 복제본을 가지게 된다. 2개의 복제본은 각각 다른 서버에서 코어로 존재한다.
    Shard Collection을 파티셔닝한 논리적인 조각을 의미. Core로 관리되는 인덱스 단위이다.
    ZooKeeper 클러스터 실행을 지원하는 오픈소스 프로그램. 대부분의 경우 Solr와 다른 하드웨어에서 별도로 운영한다.
반응형

'BackEnd > 기타' 카테고리의 다른 글

Solr 설치방법  (0) 2019.06.10
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday