Top

아파치 Solr 4 구축과 관리 [오픈소스 루씬 기반 엔터프라이즈 검색 플랫폼]

  • 원서명Apache Solr 4 Cookbook (ISBN 9781782161325)
  • 지은이라팔 쿠크
  • 옮긴이박재호, 이해영
  • ISBN : 9788960775497
  • 35,000원
  • 2014년 04월 30일 펴냄 (절판)
  • 페이퍼백 | 408쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 오픈소스 프로그래밍

판매처

  • 현재 이 도서는 구매할 수 없습니다.

책 소개

요약

이 책은 검색과 관련된 기본 프레임워크를 제공하는 아파치 루씬(Apache Lucene)을 기반으로 만들어진 전문 검색 엔진인 솔라(Solr)를 사용하는 과정에서 자주 발생하는 문제와 고민을 풀어준다. 솔라 설정부터 색인과 자료 분석, 질의 방법을 비롯해 성능 개선과 클라우드 활용까지 빠짐없이 다루고 있기에, 솔라를 사용해 검색 기능을 구현하고 서비스가 필요한 상황에 딱 맞는 책이다. 검색이 필요하다면 이 책을 읽고 솔라로 시작해보자!

책에서 다루는 내용

■ 아파치 솔라 4를 효율적으로 설정하는 방법
■ 형태와 형식이 다양한 자료를 색인하는 방법
■ 다양한 자동 완성 기능을 구현하는 방법
■ 아파치 솔라 4로 실시간 검색을 하는 방법
■ 성능을 높이기 위해 아파치 솔라의 성능을 측정하고 개선하는 방법
■ SolrCloud 기능에 통달하는 방법
■ 아파치 솔라 4의 문제를 분석하고 해결하는 방법
■ 질의 적합성을 개선하는 방법
■ 자료를 분석할 때 부딪히는 일반적인 문제를 극복하는 방법

이 책의 대상 독자

아파치 솔라를 사용하는 사람, 아파치 솔라로 소프트웨어를 개발하며 그 과정에서 흔히 발생하는 문제의 해결책이 궁금한 개발자를 위한 책이다. 아파치 루씬을 알면 더 좋으나 필수는 아니다.

이 책의 구성

1장, 아파치 솔라 설정: 솔라 설정 예제, 솔라에서 다양한 서블릿 컨테이너 사용, 아파치 주키퍼(Zookeeper)와 아파치 너치(Nutch) 설정을 다룬다.

2장, 자료 색인: 이진 파일 색인 같은 자료 색인, 자료 추출 처리기 사용, 언어 감지, 문서 필드 하나만 갱신하는 기법 등을 다룬다.

3장, 텍스트 자료 분석: 어간 추출, 지리적 위치 색인, 동의어 사용 등 자료를 분석할 때 흔히 생기는 문제에 집중한다.

4장, 솔라 질의: 중첩 질의, 문서 순위 변화, 구문 검색, 부모-자식 관계 사용 같은 아파치 솔라 질의를 설명한다.

5장, 패싯 메커니즘 사용: 패싯(facet) 메커니즘에 집중한다. 솔라에서 패싯을 사용할 때 부딪히는 일부 문제를 해결하는 데 필요한 정보를 찾을 수 있다.

6장, 솔라 성능 개선: 캐시 설정, 색인 속력 향상 등 아파치 솔라 클러스터 성능 향상에 집중한다.

7장, 클라우드를 위한 솔라: 솔라 4.0의 새 기능인 SolrCloud와 컬렉션 설정, 레플리카 설정, 분산 색인과 검색, 솔라 관리를 다룬다.

8장, 솔라의 다양한 기능: 기능 활용 문서 강조 표시, 함수 값으로 결과 정렬, 사용자 철자 오류 점검, 그룹 묶기 기능을 설명한다.

9장, 문제 해결: 메모리 문제, 색인 크기 줄이기 등 가장 흔히 부딪히는 상황을 다룬다.

부록, 실제 상황: 여러 가지 자동 완성 기능 구현하기, 실시간 검색 사용하기, 질의 적합성 개선하기 등 실제 상황에 대처하는 방법을 설명한다.

저자/역자 소개

지은이의 말

이 책을 펼친 여러분을 환영한다. 이 책에서는 아파치 솔라를 사용할 때 가장 흔히 겪는 문제를 다룬다. 솔라 구성과 설정에서 생기는 문제를 처리하는 방법, 질의 시 자주 발생하는 문제를 다루는 방법, 솔라 인스턴스를 상세하게 조율하는 방법, SolrCloud를 설정하고 사용하는 방법, 패싯과 그룹 묶기를 사용하는 방법, 자주 생기는 문제에 대처하는 방법, 그 외에도 많은 주제를 포함한다. 각 예제는 모두 실제 문제에 기반하며, 모든 예제는 사용한 설정과 코드를 상세히 설명한 해법을 포함한다.

지은이 소개

라팔 쿠크(Rafal Kuc)

타고난 팀 리더이자 소프트웨어 개발자다. 현재 세마텍스트 사(Sematext Inc.)에서 컨설턴트 겸 소프트웨어 엔지니어로 일하며 아파치 루씬과 솔라, 일래스틱서치(ElasticSearch), 하둡(Hadoop) 스택 같은 오픈소스 기술에 집중하고 있다. 금융 소프트웨어에서 전자상거래 제품까지 다양한 소프트웨어 분야에서 10여 년이 넘는 경험을 쌓았다. 자바를 주로 사용하나 목표를 더 빠르게 더 쉽게 달성해주는 도구와 프로그래밍 언어라면 무엇이든 환영한다. 또한 쿠크는 solr.pl 사이트의 공동 창립자로서 사이트에서 자신의 지식을 공유하며 사람들이 겪는 루씬과 솔라 문제를 도와주려 애쓴다. 쿠크는 ‘Lucene Eurocon’, ‘Berlin Buzzwords’, ‘ApacheCon’ 등 전 세계 학회에서 연사로도 활동한다.

2002년 처음으로 루씬을 접했을 때는 별다른 감흥을 못 느꼈으나, 2003년에 다시 루씬을 접하고 나서야 루씬이라는 프레임워크에 대한 생각을 바꿨으며, 검색 기술에서 잠재력을 보았다. 그러다가 솔라가 나왔고 이것이 시발점이었다. 그때 이후로 쿠크는 검색 기술과 자료 분석에 집중해왔다. 현재는 루씬, 솔라, 일래스틱서치가 주요 관심사다.

옮긴이의 말

어떤 정보를 저장해야 한다는 요구사항을 받으면, 거의 본능적으로 데이터베이스를 떠올리게 된다. 물론 요즘에는 관계형 데이터베이스뿐만 아니라 NoSQL 계열의 데이터베이스도 일반화되고 있기에 선택의 폭이 넓어지긴 했지만, 다크호스가 하나 있다. 바로 검색 엔진이다. 물론 검색 엔진 자체만으로 기존 데이터베이스 관리 시스템에서 가능한 모든 작업을 그대로 수행하기는 어렵지만, 최소한 검색 측면에서 보여주는 유연함은 기존 관계형/NoSQL 계열 데이터베이스가 따라오기 어렵다는 생각이다. 검색 엔진을 사용할 경우 접두어/접미어 검색은 물론이고 구문 검색, 검색 키워드 사이의 연관성에 맞는 우선순위 조정, 어간 추출 검색 등을 자유롭게 수행할 수 있다. 여기에 보너스로 이런 복잡한 연산을 수행하는 경우에도 성능까지 보장한다. 이렇듯 텍스트 분석과 질의 능력이 뛰어나기에 전문(full text) 검색 엔진이라 부르는 이유가 바로 여기에 있다.

솔라는 검색과 관련된 기본 프레임워크를 제공하는 아파치 루씬을 기반으로 실제 기업에서 사용 가능한 완성된 검색 엔진을 목표로 삼고 있다. 루씬이 검색 관련 API를 제공하는 프레임워크라면 솔라는 루씬을 기반으로 REST와 유사한 API를 클라이언트에 제공하는 완성된 프로그램으로 아파치 톰캣이나 제티에 올려서 바로 시작 가능하다. 앞서 ‘기업’에서 사용 가능한 검색 엔진이라는 표현을 사용한 이유는 솔라가 관리자용 GUI 도구를 제공하며 레플리카와 분산 환경 구성을 위한 SolrCloud 기능을 제공하기 때문이다. 단독으로 동작하는 형태로는 수직 확장에 한계가 있기 마련이므로 고성능/고가용성을 달성하기 위해 솔라 4.0부터는 수평 확장이 가능한 아키텍처를 제공한다. 이런 좋은 특성으로 인해 상용 검색 엔진을 대신해 솔라를 채택한 사이트가 점점 늘어나고 있다. http://wiki.apache.org/solr/PublicServers를 살펴보면 솔라를 검색 엔진으로 채택한 곳은 일반 회사, 정부 기관, 오픈소스 프로젝트 등 분야를 가리지 않는다.

이 책은 솔라를 사용하는 과정에서 자주 발생하는 문제와 고민을 풀어주는 짧은 예제를 정리한 형태의 쿡북으로, 검색 엔진에 대한 기본 지식을 갖춘 개발자라면 재빨리 솔라 세상에 합류할 수 있는 여러 가지 힌트를 제공한다. 목차를 보면, 솔라 설정부터 시작해, 색인과 자료 분석, 질의 방법, 패싯 메커니즘 사용 방법을 소개하며, 다음으로 성능 개선, 클라우드 활용, 추가 기능 사용 방법, 실제 상황에서 자주 나오는 문제의 해법을 소개한다. 보다시피 솔라 운영과 활용, 그리고 문제 해결에 필요한 전 주기에 걸친 내용을 빠짐없이 다루고 있으므로, 아파치 솔라 공식 사이트(https://lucene.apache.org/solr/documentation.html)에서 제공하는 튜토리얼과 참조 가이드와 함께 읽으면 더욱 좋은 결과를 얻을 것이다.

이 책에서 다루는 아파치 솔라 버전은 4.0을 기준으로 하고 있지만, 번역 시점에서 가장 최신 버전은 4.7까지 나왔다. 여러 가지 다양한 기능이 추가되었고 버그도 수정됐으므로, 혹시 ‘책에 나오지는 않지만 솔라를 사용해 이런 작업도 가능할까?’라는 의문이 들 경우 릴리스 노트(https://lucene.apache.org/solr/470/changes/Changes.html)를 참조해 버전 4.0 이후 새로 추가된 기능 목록을 살펴보고 공식 참조 가이드에서 해당 부분을 읽어보기 바란다. 마지막으로, 한국 독자 여러분이 가장 관심이 많을 법한 솔라에서 한국어 처리와 관련된 정보를 정리해봤다. ‘검색에서 쓸 만한 오픈소스 한국어 형태소 분석기를 만들자!’라는 목표로 진행되고 있는 은전 한닢 프로젝트(http://eunjeon.blogspot.kr/2013/02/blog-post.html)와 루씬 KoreanAnalyzer 개발을 목표로 진행되고 있는 루씬 한글 분석기 오픈소스 프로젝트(http://sourceforge.net/projects/lucenekorean/)를 참고하면 된다. 온오프라인을 통틀어 솔라에 대한 정보가 부족한 상황에서 아무쪼록 이 책이 독자 여러분들께 조금이라도 도움이 되면 좋겠다.

대표 역자 박재호

옮긴이 소개

박재호

포항공과대학교 컴퓨터공학과 학부와 컴퓨터공학과 대학원을 졸업했다. 현재 고성능 고가용성 전문 회사인 이노디에스(http://www.innods.com/)에서 개발에 전념하고 있으며, 블로그 ‘컴퓨터 vs 책(http://jhrogue.blogspot.com)’을 운영 중이다. 옮긴 책으로 에이콘출판사에서 펴낸 『조엘 온 소프트웨어』, 『초난감 기업의 조건』, 『리눅스 시스템 관리 완벽 가이드』, 『코드로 읽는 리눅스 디바이스 드라이버』, 『악성코드와 멀웨어 포렌식』 등이 있다.

이해영

포항공과대학교 컴퓨터공학과 학부와 퍼듀대학교 전자계산학과 대학원을 졸업했다. 현재 프리랜서 번역가로 일하며, 틈나는 대로 좋은 칼럼과 기사를 번역해 www.haeyounglee.com에 올린다. 옮긴 책으로는 『조엘 온 소프트웨어』(에이콘출판, 2005년), 『The Art of Project Management: 마음을 움직이는 프로젝트 관리』(한빛미디어, 2006년), 『초난감 기업의 조건』(에이콘출판, 2007년), 『소프트웨어 컨플릭트 2.0』(위키북스, 2007년), 『소프트웨어 크리에이티비티 2.0』(위키북스, 2009년), 『HARD CODE: 나잘난 박사의 IT 정글 서바이벌 가이드』(에이콘출판, 2009년), 『프로젝트가 서쪽으로 간 까닭은』(인사이트, 2009년), 『Clean Code 클린 코드: 애자일 소프트웨어 장인 정신』(케이앤피북스, 2010년) 등이 있다.

목차

목차
  • 1장 아파치 솔라 설정
    • 개요
    • 제티에서의 솔라 실행
    • 아파치 톰캣에서의 솔라 실행
    • 데이터 클러스터링
    • 올바른 디렉토리 구현 선택
    • 자체 색인을 사용하지 않게 철자 검사기 설정
    • 솔라 캐시 구성
    • 웹 페이지를 가져와 색인하는 방법
    • 추출 요청 처리기 설정 방법
    • 기본 유사성 구현 변경

  • 2장 자료 색인
    • 개요
    • PDF 파일 색인
    • 고유 필드 자동 생성
    • 이진 파일에서의 메타데이터 추출
    • JDBC로 자료 추출 처리기 구성
    • 자료 추출 처리기로 데이터베이스에서 자료 색인
    • 자료 추출 처리기와 델타 질의로 자료를 추출하는 방법
    • URL 데이터 소스로 자료 추출 처리기를 사용하는 방법
    • 자료 추출 처리기로 가져오며 자료를 수정하는 방법
    • 문서의 단일 필드 갱신
    • 여러 통화 처리
    • 문서 언어 알아내기
    • 기본 키 필드 색인 최적화

  • 3장 텍스트 자료 분석
    • 개요
    • 페이로드를 이용한 추가 정보 저장
    • 텍스트에서 XML 태그와 HTML 태그의 제거
    • 한 필드 내용을 다른 필드로 복사
    • 단어를 다른 단어로 변경
    • 카멜 케이스(CamelCase)로 텍스트 분할
    • 여백으로만 텍스트 분할
    • 어간 추출 없이 복수 단어를 단수로 만들기
    • 문자열 전체를 소문자로 만들기
    • 색인에 지리적 위치 저장
    • 자료에서 어간 추출
    • 효율적인 문자열 끝 와일드카드 검색을 위한 텍스트 준비
    • 숫자와 비 여백 문자로 텍스트 분할
    • 훈스펠을 어간 추출기로 사용
    • 자신만의 어간 사전 사용
    • 어간 추출 방지

  • 4장 솔라 질의
    • 개요
    • 특정 필드 값 조회
    • 필드 값으로 결과 정렬
    • 단어가 아니라 구문으로 검색
    • 단어보다 구문 우선 검색
    • 특정 문서 우선 반환
    • 단어 거리가 가까운 문서 우선 반환
    • 한 지점에서 거리로 결과 정렬
    • 부분 일치로만 문서 가져오기
    • 함수로 점수 계산에 영향 주기
    • 질의 중첩
    • 반환된 문서 수정
    • 부모-자식 관계 사용
    • 성능 관점에서의 오타 무시
    • 중복 문서 감지 및 무시
    • 필드 앨리어스 사용
    • 결과에 함수 값 반환

  • 5장 패싯 메커니즘 사용
    • 개요
    • 필드 값이 같은 문서 수 가져오기
    • 값 범위가 같은 문서 수 가져오기
    • 질의와 하위 질의에 일치하는 문서 수 가져오기
    • 패싯 결과에서 필터 제거
    • 알파벳순으로 패싯 결과 정렬
    • 패싯을 이용한 자동 완성 기능 구현
    • 필드 값이 없는 문서 수 가져오기
    • 한 질의에서 두 필드에 다른 패싯 제한 주기
    • 결정 트리 패싯 사용
    • 연관 그룹에서 가장 적합한 문서에 대한 패싯 계산

  • 6장 솔라 성능 개선
    • 개요
    • 결과 페이지 전환 속력 높이기
    • 문서 캐시 구성
    • 질의 결과 캐시 구성
    • 필터 캐시 구성
    • 시작 혹은 커밋 직후의 솔라 성능 개선
    • 캐시에 전체 결과 페이지 저장
    • 고윳값 수가 작은 필드에 대한 패싯 작업 성능 개선
    • 색인 과정에서 솔라 성능 저하 시 대처 방법
    • 질의 성능 분석
    • 필터 캐시 저장 피하기
    • 필터 질의 실행 순서 제어
    • 숫자 범위 질의 성능 개선

  • 7장 클라우드를 위한 솔라
    • 개요
    • 새로운 SolrCloud 클러스터 생성
    • 단일 클러스터 내부에 2개의 컬렉션 설정
    • SolrCloud 클러스터 관리
    • SolrCloud 클러스터 관리 GUI의 이해
    • 분산 색인과 검색
    • 이미 존재하는 라이브 클러스터에 레플리카 수 늘이기
    • 샤드 사이에서 자동화된 문서 배포 멈추기

  • 8장 솔라의 다양한 기능
    • 개요
    • 결과 목록에 반환된 문서와 유사한 문서 더 얻기
    • 일치된 단어의 강조
    • 긴 텍스트 필드를 강조하고 좋은 성능을 얻는 방법
    • 함수 값으로 결과 정렬
    • 발음에 따른 단어 검색
    • 정의된 단어의 무시
    • 검색 결과의 통계 계산
    • 사용자의 오타 점검
    • 결과를 그룹으로 묶기 위한 필드 값 사용
    • 결과를 그룹으로 묶기 위한 질의 사용
    • 결과를 그룹으로 묶기 위한 함수 질의 사용

  • 9장 문제 해결
    • 개요
    • 너무 많이 열린 파일 처리
    • 메모리 부족 문제 해결
    • 비영어권 자료의 적절한 정렬
    • 색인을 작게 만들기
    • 솔라 문제 진단
    • 스와핑 피하기
  • 부록 : 실제 상황

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안