Top

오픈소스 자바 검색엔진 정복 (세트)

  • 지은이마이클 맥캔들리스, 에릭 해쳐, 오티스 고스포드네티치, 라팔 쿠크
  • 옮긴이: 강철구, 박재호, 이해영
  • ISBN : 9788960775565
  • 75,000원
  • 2014년 05월 14일 펴냄 (절판)
  • 페이퍼백 | 1,184쪽 | 188*250mm
  • 시리즈 : 오픈소스 프로그래밍

판매처

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

책 소개

세트 구성: 전2권

대표적인 오픈소스 자바 검색엔진 루씬(Lucene)과 아파치 솔라(Apache Solr)를 마스터할 수 있는 세트

1) 『(개정판) 루씬 인 액션: 고성능 오픈소스 자바 검색엔진』
2) 『아파치 Solr 4 구축과 관리: 오픈소스 루씬 기반 엔터프라이즈 검색 플랫폼』

『(개정판) 루씬 인 액션』 소개

DB에 담겨 있는 수백만 건의 정보를 마음대로 조회하지 못하거나, 사내 인트라넷의 엄청난 디렉토리 구조 안에 저장된 수많은 문서 중 원하는 내용이 들어있는 문서를 찾지 못해 어려움을 겪고 있다면, 그렇다고 상용 검색 엔진을 구입해 사용하기엔 너무 부담스러운 경우, 루씬(Lucene)이 정답이다. 이 책은 외주 개발이든 사내 개발이든 간에 전문적인 검색 기능을 필요로 한다면 최우선으로 고려해야 할 루씬에 대해 색인부터 검색과 고급 설정까지 예제 기반으로 설명한다. 『(개정판) 루씬 인 액션』을 기반으로 루씬의 A부터 Z까지 완벽하게 활용하는 고성능 검색 애플리케이션을 개발해보자.

초판이 출간된 이후 5년간 루씬 프로젝트에서 많은 부분이 달라졌다. 영향력 있는 오픈소스 프로젝트는 대부분 그렇지만 루씬도 탄탄한 기술적인 기반을 갖고 있으며, 사용자와 개발자가 참여하는 안정적인 커뮤니티가 계속해서 유지되고 있고, 이런 잠재력이 뭉쳐 엄청나게 발전하는 중이다. 초판이 출간된 이후 추가되거나 변경된 기능을 살펴보면 대략 다음과 같다.

『(개정판) 루씬 인 액션』에서 다루는 내용

■ 준실시간 검색
■ 문서에서 텍스트를 추출할 때 티카(Tika) 프로젝트 활용
■ NumericField를 통해 숫자 필드를 만들고, NumericRangeQuery 질의로 숫자 범위를 빠르게 조회 가능
■ IndexWriter를 통해 문서를 변경하거나 삭제
■ IndexWriter에서 트랜잭션 관련 기능 제공(커밋이나 롤백)
■ 읽기 전용의 IndexReader와 NIOFSDirectory 등을 활용해 병렬 검색 능력 개선
■ 순수한 불리언 검색 기능
■ 색인에 추가 정보를 적재하고, BoostingTermQuery 등에서 적재된 정보를 활용
■ IndexReader.reopen 메소드로 변경 사항이 반영된 IndexReader 인스턴스를 최대한 효율적으로 확보 가능
■ 메모리, 디스크, 파일 기술자 등의 자원 활용도 파악
■ 함수 질의
■ 색인이나 검색 속도 등의 성능 지표를 기준으로 최적화
■ 진행 중인 색인 작업을 멈추지 않고도 색인의 내용을 백업
■ 추가 언어에 대한 루씬 포팅 프로젝트
■ 성능 측정 프레임워크를 사용한 루씬의 성능 측정
■ 재사용할 수 있는 TokenStream API
■ 색인이나 검색할 때 스레드를 활용해 병렬 처리
■ 색인에 저장된 필드의 내용을 가져올 때 FieldSelector를 활용해 성능 개선
■ TermVectorMapper를 사용해 텀 벡터를 불러오는 방법 제어
■ 루씬의 락 관리 정책 단순화
■ LockFactory, DeletionPolicy, IndexDeletionPolicy, MergePolicy, MergeScheduler 등을 입맛에 맞게 새로 구현
■ XMLQueryParser나 루씬 지역 검색 등의 새로운 contrib 모듈
■ 자주 발생하는 문제 수정

그리고 12장, 13장, 14장에 새로운 사례 연구도 실었다. 루씬의 관리 측면을 설명하고자 11장도 추가했다. 원래 여러 종류의 문서를 읽고 파싱하는 프레임워크에 대해 설명했던 7장에서는 아파치 프레임워크 중 하나인 티카를 기반으로 새로 설명한다. 그리고 모든 예제 코드는 3.0.1 버전을 기준으로 작성했다. 물론 초판에서 받았던 독자의 다양한 의견도 다수 반영했다.

『(개정판) 루씬 인 액션』의 대상 독자

자신들의 제품이나 솔루션에 강력한 검색 기능을 더하려는 개발자들은 이 책을 꼭 읽어야 한다. 또한 단순히 루씬이 어떤 것인지 궁금한 사람에게도 훌륭한 정보를 제공하며, 정보 검색 기술에 대해 공부하는 독자에게도 좋은 교재가 될 수 있다. 그리고 당장은 알아둘 필요가 없다 하더라도 읽어두면 정보 검색이라는 트렌드에 부응하는 지식을 쌓을 수 있다.

이 책에서는 아파치 프로젝트 가운데 하나인 루씬, 즉 자바 버전의 루씬을 중점적으로 다루며, 대부분의 예제 코드도 자바로 작성했다. 따라서 자바에 익숙하다면 아주 편안하게 내용을 이해할 수 있을 것이며, 여러 가지 자바 프로그래밍 경험은 이 책을 읽는 데 큰 도움이 된다. 자바 버전의 루씬이 아니고 C++나 C#, 파이썬, 펄 등의 언어로 루씬을 사용해도 기본개념과 주요기능은 자바 버전과 거의 같으므로 별다른 어려움 없이 적용할 수 있을 것이다.

『아파치 Solr 4 구축과 관리』 소개

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

『아파치 Solr 4 구축과 관리』에서 다루는 내용

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

『아파치 Solr 4 구축과 관리』의 대상 독자

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

저자/역자 소개

저자 소개

마이클 맥캔들리스 (Michael McCandless)

이미 10년 이상 검색 엔진 분야에서 일하고 있다. 1999년에는 다른 세 명과 의기투합해 파이썬과 C++ 언어로 사용자 기반의 기업용 검색 엔진 소프트웨어를 개발하는 아이프레이즈 테크놀로지스(iPhrase Technologies)를 창업했다. 그리고 이 회사를 2005년에 IBM이 인수한 후, 루씬을 사용하기 시작한 마이클은 코드를 여러 번 고쳐 제공하기도 했다. 결국 2006년에는 루씬 프로젝트의 커미터가 됐고, 2008년에는 PMC 위원으로 활동하기 시작했다. 마이클은 MIT에서 학사, 석사, 박사를 마쳤고 현재 매사추세츠 주의 렉싱턴에서 아내와 네 아이 미아(Mia), 카이라(Kyra), 조엘(Joel), 카일(Kyle)과 함께 살고 있다. 마이클은 http://chbits.blogspot.com블로그를 운영하고 있다.

에릭 해쳐 (Erik Hatcher)

기술적으로 재미있고 도전해 볼만한 일과 관련한 프로그램을 만들고 글도 쓰며 강연도 해오고 있다. 이미 여러 분야에서 다양한 프로그래밍 언어를 사용해 소프트웨어를 만들었으며, 스티브 로런(Steve Loughran)과 함께 업계에서 알아주는 책 중 하나인 『Java Development with Ant』(Manning, 2002)을 쓰기도 했다. 첫 번째 책인 『Java Development with Ant』를 출판한 이후 노플러프 저스트스터프(No Fluff, Just Stuff) 심포지엄이나 자바원(JavaOne) 컨퍼런스, 오라일리의 오픈 소스 컨벤션(Open Source Convention), 자바존(JavaZone), 디복스(devoxx), 각종 자바 사용자 그룹 모임, 그리고 여러 웨비나 등에서 강연을 해왔다. 현재 아파치 소프트웨어 재단의 회원으로 활동중이며 루씬과 솔라를 포함해 여러 프로젝트에서 왕성하게 활동 중이다. 에릭이 최근 가장 좋아하는 기술로는 솔라, 솔라리타스(Solritas), 플레어(Flare), 블랙라이트(Blacklight), 솔라-루비(solr-ruby) 등이 있으며, 그 중에도 솔라를 활용해 멋진 사용자 경험을 끌어내는 데 재미를 붙이고 있다. 현재 오픈소스 검색 엔진을 활용한 다양한 서비스를 제공하는 루시드 이매지네이션(Lucid Imagination)을 공동 창업해 일하고 있으며, 버지니아 주 중부 지방에 살고 있다.

오티스 고스포드네티치 (Otis Gospodnetic)

루씬이 아파치 재단으로 옮겨온 이후부터 루씬 프로젝트에 참여했다. 검색(특히 루씬, 솔라, 너치 등)과 관련한 서비스와 제품, 그리고 빅데이터 분석 서비스(하둡 등)를 제공하는 시마텍스트(Sematext)를 공동 창업해 일하고 있다. 지난 수년간 루씬과 솔라에 대한 강연을 해왔으며, 오라일리 네트워크나 IBM의 디벨로퍼웍스(developerWorks) 등에 루씬 관련 글을 여러 차례 기고했다. 얼마 전에는 자신의 경험을 살려 미국에서 공부하고자 하는 외국인을 대상으로 하는 『To Choose and Be Chosen: Pursuing Education in America』라는 책을 저술하기도 했다. 오티스는 현재 뉴욕 시에 살고 있으며, NY Search & Discovery 모임을 주도하고 있다.

라팔 쿠크(Rafal Kuc)

타고난 팀 리더이자 소프트웨어 개발자다. 현재 세마텍스트 사(Sematext Inc.)에서 컨설턴트 겸 소프트웨어 엔지니어로 일하며 아파치 루씬과 솔라, 일래스틱서치(ElasticSearch), 하둡(Hadoop) 스택 같은 오픈소스 기술에 집중하고 있다. 금융 소프트웨어에서 전자상거래 제품까지 다양한 소프트웨어 분야에서 10여 년이 넘는 경험을 쌓았다. 자바를 주로 사용하나 목표를 더 빠르게 더 쉽게 달성해주는 도구와 프로그래밍 언어라면 무엇이든 환영한다. 또한 쿠크는 solr.pl 사이트의 공동 창립자로서 사이트에서 자신의 지식을 공유하며 사람들이 겪는 루씬과 솔라 문제를 도와주려 애쓴다. 쿠크는 ‘Lucene Eurocon’, ‘Berlin Buzzwords’, ‘ApacheCon’ 등 전 세계 학회에서 연사로도 활동한다. 2002년 처음으로 루씬을 접했을 때는 별다른 감흥을 못 느꼈으나, 2003년에 다시 루씬을 접하고 나서야 루씬이라는 프레임워크에 대한 생각을 바꿨으며, 검색 기술에서 잠재력을 보았다. 그러다가 솔라가 나왔고 이것이 시발점이었다. 그때 이후로 쿠크는 검색 기술과 자료 분석에 집중해왔다. 현재는 루씬, 솔라, 일래스틱서치가 주요 관심사다.

옮긴이 소개

강철구

컴퓨터 비전(영상 인식)을 전공했으며, 검색 엔진, 인공 지능, 모바일 등의 키워드에 관심이 많고, 현재 캐나다에서 소프트웨어 개발자로 일하고 있다. 에이콘출판사에서 출간한 『루씬 인 액션』(2005년)과 『Ajax 인 액션』(2006년), 『자바 병렬 프로그래밍』(2008년), 『알짜만 골라 배우는 안드로이드 프로그래밍』(2009년), 『아이폰북』(2009년), 『(개정판)알짜만 골라 배우는 안드로이드 프로그래밍2』(2010년),『아이폰 개발자를 위한 아이패드 프로그래밍』(2010년)을 번역했다.

박재호

포항공과대학교 컴퓨터공학과 학부와 컴퓨터공학과 대학원을 졸업했다. 현재 고성능 고가용성 전문 회사인 이노디에스(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부 루씬 기초
  • 1장 루씬과의 만남
    • 1.1 정보 홍수의 시대
    • 1.2 루씬이란?
      • 1.2.1 루씬으로 처리하기 좋은 기능
      • 1.2.2 루씬의 역사
    • 1.3 루씬과 검색 애플리케이션의 구조
      • 1.3.1 색인 과정 구성 요소
      • 1.3.2 검색 과정 구성 요소
      • 1.3.3 검색 애플리케이션의 나머지 요소
      • 1.3.4 루씬과 검색 애플리케이션
    • 1.4 루씬 인 액션 : 예제 애플리케이션
      • 1.4.1 색인 생성
      • 1.4.2 색인의 내용 검색
    • 1.5 색인 관련 핵심 클래스
      • 1.5.1 IndexWriter
      • 1.5.2 Directory
      • 1.5.3 Analyzer
      • 1.5.4 Document
      • 1.5.5 Field
    • 1.6 검색 관련 핵심 클래스
      • 1.6.1 IndexSearcher
      • 1.6.2 Term
      • 1.6.3 Query
      • 1.6.4 TermQuery
      • 1.6.5 TopDocs
    • 1.7 정리
  • 2장 색인
    • 2.1 루씬 데이터 모델
      • 2.1.1 문서와 필드
      • 2.1.2 유연한 스키마
      • 2.1.3 비정규화
    • 2.2 색인 절차
      • 2.2.1 텍스트 추출과 문서 생성
      • 2.2.2 분석
      • 2.2.3 색인에 토큰 추가
    • 2.3 기본 색인 작업
      • 2.3.1 색인에 문서 추가
      • 2.3.2 색인에서 문서 삭제
      • 2.3.3 색인의 문서 변경
    • 2.4 필드별 설정
      • 2.4.1 색인 관련 설정
      • 2.4.2 필드의 원문 저장 관련 설정
      • 2.4.3 텀 벡터 관련 설정
      • 2.4.4 Reader, TokenStream, byte[] 필드
      • 2.4.5 유용한 필드 설정 조합
      • 2.4.6 정렬 관련 설정
      • 2.4.7 다중 값 필드
    • 2.5 문서와 필드 중요도
      • 2.5.1 문서 중요도
      • 2.5.2 필드 중요도
      • 2.5.3 norm
    • 2.6 숫자, 날짜, 시각 색인
      • 2.6.1 숫자 색인
      • 2.6.2 날짜, 시각 색인
    • 2.7 필드 길이
    • 2.8 준실시간 검색
    • 2.9 색인 최적화
    • 2.10 여러 종류의 Directory
    • 2.11 병렬 처리, 스레드 안전성, 락
      • 2.11.1 스레드와 다중 JVM 안전성
      • 2.11.2 원격 파일 시스템의 색인 공유
      • 2.11.3 색인 락
    • 2.12 색인 작업 디버깅
    • 2.13 고급 색인 기법
      • 2.13.1 IndexReader에서 문서 삭제
      • 2.13.2 삭제된 문서가 차지하는 디스크 공간
      • 2.13.3 문서 버퍼, 플러시
      • 2.13.4 색인 커밋
      • 2.13.5 ACID 트랜잭션과 색인의 일관성
      • 2.13.6 병합
    • 2.14 정리
  • 3장 검색
    • 3.1 간단한 검색 기능 구현
      • 3.1.1 텀 검색
      • 3.1.2 QueryParser로 사용자가 입력한 검색어 파싱
    • 3.2 IndexSearcher 활용
      • 3.2.1 IndexSearcher 인스턴스 생성
      • 3.2.2 검색 실행
      • 3.2.3 TopDocs 결과 활용
      • 3.2.4 결과 페이지 이동
      • 3.2.5 준실시간 검색
    • 3.3 연관도 점수
      • 3.3.1 점수 계산
      • 3.3.2 explain() 메소드로 점수 내역 확인
    • 3.4 다양한 종류의 질의
      • 3.4.1 TermQuery 텀 검색
      • 3.4.2 TermRangeQuery 텀 범위 검색
      • 3.4.3 NumericRangeQuery 숫자 범위 검색
      • 3.4.4 PrefixQuery 접두어 검색
      • 3.4.5 BooleanQuery 불리언 질의
      • 3.4.6 PhraseQuery 구문 검색
      • 3.4.7 WildcardQuery 와일드카드 검색
      • 3.4.8 FuzzyQuery 비슷한 단어 검색
      • 3.4.9 MatchAllDocsQuery 모든 문서 조회
    • 3.5 QueryParser로 질의 표현식 파싱
      • 3.5.1 Query.toString
      • 3.5.2 TermQuery
      • 3.5.3 텀 범위 검색
      • 3.5.4 숫자와 날짜 범위 검색
      • 3.5.5 접두어 질의와 와일드카드 질의
      • 3.5.6 불리언 연산자
      • 3.5.7 구문 질의
      • 3.5.8 퍼지 검색
      • 3.5.9 MatchAllDocsQuery
      • 3.5.10 질의 그룹
      • 3.5.11 필드 선택
      • 3.5.12 하위 질의에 중요도 지정
      • 3.5.13 과연 QueryParser를 사용해야 하는가?
    • 3.6 정리
  • 4장 루씬의 텍스트 분석
    • 4.1 분석기 활용
      • 4.1.1 색인 과정의 분석기
      • 4.1.2 QueryParser와 분석기
      • 4.1.3 파싱과 분석의 차이점
    • 4.2 분석기 내부 구조
      • 4.2.1 토큰
      • 4.2.2 TokenStream
      • 4.2.3 분석기 결과 확인
      • 4.2.4 TokenFilter 순서의 중요성
    • 4.3 루씬 내장 분석기
      • 4.3.1 StopAnalyzer
      • 4.3.2 StandardAnalyzer
      • 4.3.3 어떤 분석기를 사용해야 할까?
    • 4.4 유사 발음 검색
    • 4.5 유사어 검색
      • 4.5.1 유사어 분석기 작성
      • 4.5.2 토큰 위치 증가 값 확인
    • 4.6 기본형 분석기
      • 4.6.1 StopFilter와 빈 공간
      • 4.6.2 기본형 찾기와 불용어 처리 방법 변경
    • 4.7 필드 유형별 처리
      • 4.7.1 동일한 이름의 필드
      • 4.7.2 필드별 분석기 지정
      • 4.7.3 분석하지 않은 필드 검색
    • 4.8 언어별 분석
      • 4.8.1 유니코드와 인코딩
      • 4.8.2 비영어권 언어 분석
      • 4.8.3 글자 정규화
      • 4.8.4 아시아 언어 분석
      • 4.8.5 Zaijian
    • 4.9 너치 분석
    • 4.10 정리
  • 5장 고급 검색 기법
    • 5.1 필드 캐시
      • 5.1.1 모든 문서의 필드 값 불러오기
      • 5.1.2 세그먼트별 IndexReader
    • 5.2 검색 결과 정렬
      • 5.2.1 필드 값으로 정렬
      • 5.2.2 연관도 순서 정렬
      • 5.2.3 색인 순서 정렬
      • 5.2.4 필드 값으로 정렬
      • 5.2.5 정렬 순서 변경
      • 5.2.6 여러 필드의 값으로 정렬
      • 5.2.7 정렬할 필드 자료형 선택
      • 5.2.8 정렬할 로케일 지정
    • 5.3 MultiPhraseQuery 활용
    • 5.4 여러 개의 필드를 동시에 검색
    • 5.5 스팬 질의
      • 5.5.1 SpanTermQuery
      • 5.5.2 필드의 맨 앞부분 검색
      • 5.5.3 일정 범위 안에 위치한 스팬 검색
      • 5.5.4 겹치는 부분을 결과에서 제외
      • 5.5.5 SpanOrQuery
      • 5.5.6 스팬 질의와 QueryParser
    • 5.6 검색 필터
      • 5.6.1 TermRangeFilter
      • 5.6.2 NumericRangeFilter
      • 5.6.3 FieldCacheRangeFilter
      • 5.6.4 특정 텀으로 필터링
      • 5.6.5 QueryWrapperFilter
      • 5.6.6 SpanQueryFilter
      • 5.6.7 보안 필터
      • 5.6.8 필터와 BooleanQuery
      • 5.6.9 PrefixFilter
      • 5.6.10 필터 캐시
      • 5.6.11 필터를 질의로 변환
      • 5.6.12 필터에 필터 적용
      • 5.6.13 내장 필터에서 제공하지 않는 기능
    • 5.7 함수 질의와 연관도 점수
      • 5.7.1 함수 질의 클래스
      • 5.7.2 최근 문서에 중요도를 높게 부여하는 함수 질의
    • 5.8 다수의 루씬 색인 검색
      • 5.8.1 MultiSearcher
      • 5.8.2 스레드를 활용하는 ParallelMultiSearcher
    • 5.9 텀 벡터 활용
      • 5.9.1 비슷한 책 조회
      • 5.9.2 자동 분류
      • 5.9.3 TermVectorMapper
    • 5.10 FieldSelector로 필드 선택
    • 5.11 검색 중단
    • 5.12 정리
  • 6장 검색 기능 확장
    • 6.1 정렬 기능 직접 구현
      • 6.1.1 색인 시점에 필요한 준비
      • 6.1.2 거리 기준 정렬 기능 구현
      • 6.1.3 정렬할 때 계산한 값 활용
    • 6.2 Collector 클래스 직접 구현
      • 6.2.1 Collector 클래스
      • 6.2.2 Collector 직접 구현: BookLinkCollector
      • 6.2.3 AllDocCollector
    • 6.3 QueryParser 확장
      • 6.3.1 QueryParser의 기능 변경
      • 6.3.2 퍼지와 와일드카드 질의 제한
      • 6.3.3 숫자 범위 질의 처리
      • 6.3.4 날짜 범위 질의 처리
      • 6.3.5 순서가 정해진 구문 질의
    • 6.4 필터 직접 구현
      • 6.4.1 필터 구현
      • 6.4.2 직접 구현한 필터 적용
      • 6.4.3 필터를 적용하는 다른 방법: FilteredQuery
    • 6.5 적재
      • 6.5.1 분석과 적재
      • 6.5.2 검색 중 적재된 값 활용
      • 6.5.3 스팬 질의와 적재
      • 6.5.4 TermPositions로 적재된 내용 확보
    • 6.6 정리
  • 2부 고급 루씬
  • 7장 티카로 텍스트 추출
    • 7.1 티카란?
    • 7.2 티카의 논리적인 구조와 API
    • 7.3 티카 설치
    • 7.4 티카에 내장된 텍스트 추출 도구
    • 7.5 텍스트 추출 기능 활용
      • 7.5.1 루씬 문서 색인
      • 7.5.2 Tika 도우미 클래스
      • 7.5.3 파서 선택
    • 7.6 티카의 한계
    • 7.7 XML 색인
      • 7.7.1 SAX 파싱
      • 7.7.2 아파치 커먼스 다이제스터
    • 7.8 티카의 대안
    • 7.9 정리
  • 8장 필수 확장 기능
    • 8.1 루크
      • 8.1.1 Overview 탭: 색인 개요
      • 8.1.2 문서 조회
      • 8.1.3 QueryParser를 사용해 검색
      • 8.1.4 파일과 플러그인
    • 8.2 분석기와 토큰 필터
      • 8.2.1 스노볼 분석기
      • 8.2.2 N그램 필터
      • 8.2.3 싱글 필터
      • 8.2.4 contrib 모듈 분석기 활용
    • 8.3 검색 질의 하이라이팅
      • 8.3.1 하이라이팅 모듈
      • 8.3.2 단독 실행 예제
      • 8.3.3 CSS 하이라이팅
      • 8.3.4 검색 결과 하이라이팅
    • 8.4 FastVectorHighlighter
    • 8.5 검색어 추천
      • 8.5.1 추천 검색어 후보 추출
      • 8.5.2 최적의 추천 단어 선택
      • 8.5.3 추천 검색어를 화면에 표시
      • 8.5.4 추천 기능을 개선할 아이디어
    • 8.6 특이한 Query
      • 8.6.1 MoreLikeThis
      • 8.6.2 FuzzyLikeThisQuery
      • 8.6.3 BoostingQuery
      • 8.6.4 TermsFilter
      • 8.6.5 DuplicateFilter
      • 8.6.6 RegexQuery
    • 8.7 contrib 모듈 빌드
      • 8.7.1 소스코드 확보
      • 8.7.2 contrib 디렉토리에서 ant 실행
    • 8.8 정리
  • 9장 추가 확장 기능
    • 9.1 필터 연결
    • 9.2 버클리DB Directory
    • 9.3 워드넷 유의어 사전
      • 9.3.1 유의어 색인 구축
      • 9.3.2 분석기에서 워드넷 유의어 활용
    • 9.4 메모리 기반 색인
    • 9.5 XML QueryParser
      • 9.5.1 XmlQueryParser 활용
      • 9.5.2 XML 질의 문법 확장
    • 9.6 서라운드 질의 언어
    • 9.7 지리적인 위치 정보 검색
      • 9.7.1 지리 정보 색인
      • 9.7.2 공간 정보 검색
      • 9.7.3 위치 정보 검색과 성능
    • 9.8 원격 서버의 여러 색인 검색
    • 9.9 유연한 QueryParser
    • 9.10 작고 다양한 확장 기능
    • 9.11 정리
  • 10장 다른 언어에서 루씬 활용
    • 10.1 포팅이란?
      • 10.1.1 장단점
      • 10.1.2 적당한 포팅 방법 선택
    • 10.2 CLucene(C++)
      • 10.2.1 개발 동기
      • 10.2.2 API와 색인 호환성
      • 10.2.3 지원하는 플랫폼
      • 10.2.4 현황과 미래
    • 10.3 루씬닷넷(C#와 다른 닷넷 언어)
      • 10.3.1 API 호환성
      • 10.3.2 색인 호환성
    • 10.4 키노서치, 루씨(펄)
      • 10.4.1 키노서치
      • 10.4.2 루씨
      • 10.4.3 기타 펄 루씬 프로젝트
    • 10.5 페렛(루비)
    • 10.6 PHP
      • 10.6.1 Zend 프레임워크
      • 10.6.2 PHP Bridge
    • 10.7 파이루씬(파이썬)
      • 10.7.1 API 호환성
      • 10.7.2 기타 파이썬 루씬 프로젝트
    • 10.8 솔라(다양한 프로그래밍 언어)
    • 10.9 정리
  • 11장 루씬 관리와 성능 튜닝
    • 11.1 성능 최적화
      • 11.1.1 간단한 최적화 방법
      • 11.1.2 성능 측정
      • 11.1.3 색인 후 검색까지 걸리는 시간 최적화
      • 11.1.4 색인 속도 최적화
      • 11.1.5 검색 처리량과 대기 시간 최적화
    • 11.2 스레드와 병렬 처리
      • 11.2.1 병렬 색인
      • 11.2.2 병렬 검색
    • 11.3 자원 관리
      • 11.3.1 디스크
      • 11.3.2 파일 식별자
      • 11.3.3 메모리
    • 11.4 색인 백업
      • 11.4.1 백업
      • 11.4.2 복원
    • 11.5 일반적인 오류
      • 11.5.1 깨진 색인
      • 11.5.2 색인 수리
    • 11.6 정리
  • 3부 사례 연구
  • 12장 사례 연구 1: 크루글
    • 12.1 크루글 소개
    • 12.2 장비의 구조
    • 12.3 검색 성능
    • 12.4 소스코드 해석
    • 12.5 부분 문자열 검색
    • 12.6 질의, 검색
    • 12.7 개선 방안
      • 12.7.1 필드 캐시 메모리 사용량
      • 12.7.2 색인 통합
    • 12.8 정리
  • 13장 사례 연구 2: SIREn
    • 13.1 소개
    • 13.2 효과
      • 13.2.1 모든 필드를 검색
      • 13.2.2 효율적인 단일 어휘
      • 13.2.3 유연한 필드
    • 13.3 SIREn으로 엔티티 색인
      • 13.3.1 데이터 모델
      • 13.3.2 구현 관련 문제
      • 13.3.3 색인 스키마
      • 13.3.4 색인 전 데이터 준비
    • 13.4 엔티티 검색
      • 13.4.1 내용 검색
      • 13.4.2 셀 내부 검색
      • 13.4.3 셀을 튜플로 묶음
      • 13.4.4 엔티티 설명 질의
    • 13.5 SIREn과 솔라 연동
    • 13.6 성능 측정
    • 13.7 정리
  • 14장 사례 연구 3: 링크드인
    • 14.1 보보 브라우즈와 다면 검색
      • 14.1.1 보보 브라우즈 설계
      • 14.1.2 고급 기능 활용
    • 14.2 조이 실시간 검색
      • 14.2.1 조이 시스템 구조
      • 14.2.2 실시간과 준실시간
      • 14.2.3 문서와 색인 요청
      • 14.2.4 IndexReader 직접 작성
      • 14.2.5 루씬의 준실시간 검색과 비교
      • 14.2.6 분산 검색
    • 14.3 정리
  • 부록
  • 부록 A 루씬 설치
  • 부록 B 루씬 색인 구조
  • 부록 C 루씬 성능 측정
  • 부록 D 참고 문헌

  • 『아파치 Solr 4 구축과 관리』
  • 1장 아파치 솔라 설정
    • 개요
    • 제티에서의 솔라 실행
    • 아파치 톰캣에서의 솔라 실행
    • 데이터 클러스터링
    • 올바른 디렉토리 구현 선택
    • 자체 색인을 사용하지 않게 철자 검사기 설정
    • 솔라 캐시 구성
    • 웹 페이지를 가져와 색인하는 방법
    • 추출 요청 처리기 설정 방법
    • 기본 유사성 구현 변경
  • 2장 자료 색인
    • 개요
    • PDF 파일 색인
    • 고유 필드 자동 생성
    • 이진 파일에서의 메타데이터 추출
    • JDBC로 자료 추출 처리기 구성
    • 자료 추출 처리기로 데이터베이스에서 자료 색인
    • 자료 추출 처리기와 델타 질의로 자료를 추출하는 방법
    • URL 데이터 소스로 자료 추출 처리기를 사용하는 방법
    • 자료 추출 처리기로 가져오며 자료를 수정하는 방법
    • 문서의 단일 필드 갱신
    • 여러 통화 처리
    • 문서 언어 알아내기
    • 기본 키 필드 색인 최적화
  • 3장 텍스트 자료 분석
    • 개요
    • 페이로드를 이용한 추가 정보 저장
    • 텍스트에서 XML 태그와 HTML 태그의 제거
    • 한 필드 내용을 다른 필드로 복사
    • 단어를 다른 단어로 변경
    • 카멜 케이스(CamelCase)로 텍스트 분할
    • 여백으로만 텍스트 분할
    • 어간 추출 없이 복수 단어를 단수로 만들기
    • 문자열 전체를 소문자로 만들기
    • 색인에 지리적 위치 저장
    • 자료에서 어간 추출
    • 효율적인 문자열 끝 와일드카드 검색을 위한 텍스트 준비
    • 숫자와 비 여백 문자로 텍스트 분할
    • 훈스펠을 어간 추출기로 사용
    • 자신만의 어간 사전 사용
    • 어간 추출 방지
  • 4장 솔라 질의
    • 개요
    • 특정 필드 값 조회
    • 필드 값으로 결과 정렬
    • 단어가 아니라 구문으로 검색
    • 단어보다 구문 우선 검색
    • 특정 문서 우선 반환
    • 단어 거리가 가까운 문서 우선 반환
    • 한 지점에서 거리로 결과 정렬
    • 부분 일치로만 문서 가져오기
    • 함수로 점수 계산에 영향 주기
    • 질의 중첩
    • 반환된 문서 수정
    • 부모-자식 관계 사용
    • 성능 관점에서의 오타 무시
    • 중복 문서 감지 및 무시
    • 필드 앨리어스 사용
    • 결과에 함수 값 반환
  • 5장 패싯 메커니즘 사용
    • 개요
    • 필드 값이 같은 문서 수 가져오기
    • 값 범위가 같은 문서 수 가져오기
    • 질의와 하위 질의에 일치하는 문서 수 가져오기
    • 패싯 결과에서 필터 제거
    • 알파벳순으로 패싯 결과 정렬
    • 패싯을 이용한 자동 완성 기능 구현
    • 필드 값이 없는 문서 수 가져오기
    • 한 질의에서 두 필드에 다른 패싯 제한 주기
    • 결정 트리 패싯 사용
    • 연관 그룹에서 가장 적합한 문서에 대한 패싯 계산
  • 6장 솔라 성능 개선
    • 개요
    • 결과 페이지 전환 속력 높이기
    • 문서 캐시 구성
    • 질의 결과 캐시 구성
    • 필터 캐시 구성
    • 시작 혹은 커밋 직후의 솔라 성능 개선
    • 캐시에 전체 결과 페이지 저장
    • 고윳값 수가 작은 필드에 대한 패싯 작업 성능 개선
    • 색인 과정에서 솔라 성능 저하 시 대처 방법
    • 질의 성능 분석
    • 필터 캐시 저장 피하기
    • 필터 질의 실행 순서 제어
    • 숫자 범위 질의 성능 개선
  • 7장 클라우드를 위한 솔라
    • 개요
    • 새로운 SolrCloud 클러스터 생성
    • 단일 클러스터 내부에 2개의 컬렉션 설정
    • SolrCloud 클러스터 관리
    • SolrCloud 클러스터 관리 GUI의 이해
    • 분산 색인과 검색
    • 이미 존재하는 라이브 클러스터에 레플리카 수 늘이기
    • 샤드 사이에서 자동화된 문서 배포 멈추기
  • 8장 솔라의 다양한 기능
    • 개요
    • 결과 목록에 반환된 문서와 유사한 문서 더 얻기
    • 일치된 단어의 강조
    • 긴 텍스트 필드를 강조하고 좋은 성능을 얻는 방법
    • 함수 값으로 결과 정렬
    • 발음에 따른 단어 검색
    • 정의된 단어의 무시
    • 검색 결과의 통계 계산
    • 사용자의 오타 점검
    • 결과를 그룹으로 묶기 위한 필드 값 사용
    • 결과를 그룹으로 묶기 위한 질의 사용
    • 결과를 그룹으로 묶기 위한 함수 질의 사용
  • 9장 문제 해결
    • 개요
    • 너무 많이 열린 파일 처리
    • 메모리 부족 문제 해결
    • 비영어권 자료의 적절한 정렬
    • 색인을 작게 만들기
    • 솔라 문제 진단
    • 스와핑 피하기
  • 부록: 실제 상황

도서 오류 신고

도서 오류 신고

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

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

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