logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

루씬 인 액션

루씬 인 액션

(고성능 오픈소스 자바 검색엔진, 개정판)

에릭 해쳐, 오티스 고스포드네티츠, 마이클 맥캔들리스 (지은이), 강철구 (옮긴이)
  |  
에이콘출판
2013-08-30
  |  
45,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
알라딘 40,500원 -10% 0원 2,250원 38,250원 >
yes24 로딩중
교보문고 로딩중
영풍문고 로딩중
인터파크 로딩중
11st 로딩중
G마켓 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
로딩중

e-Book

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
로딩중

책 이미지

루씬 인 액션

책 정보

· 제목 : 루씬 인 액션 (고성능 오픈소스 자바 검색엔진, 개정판)
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > 자바
· ISBN : 9788960774674
· 쪽수 : 776쪽

책 소개

외주 개발이든 사내 개발이든 간에 전문적인 검색 기능을 필요로 한다면 최우선으로 고려해야 할 루씬에 대해 색인부터 검색과 고급 설정까지 예제 기반으로 설명한다.

목차

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 참고 문헌

저자소개

에릭 해쳐 (지은이)    정보 더보기
기술적으로 재미있고 도전해 볼만한 일과 관련한 프로그램을 만들고 글도 쓰며 강연도 해오고 있다. 이미 여러 분야에서 다양한 프로그래밍 언어를 사용해 소프트웨어를 만들었으며, 스티브 로런(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)을 공동 창업해 일하고 있으며, 버지니아 주 중부 지방에 살고 있다.
펼치기
오티스 고스포드네티츠 (지은이)    정보 더보기
루씬이 아파치 재단으로 옮겨온 이후부터 루씬 프로젝트에 참여했다. 검색(특히 루씬, 솔라, 너치 등)과 관련한 서비스와 제품, 그리고 빅데이터 분석 서비스(하둡 등)를 제공하는 시마텍스트(Sematext)를 공동 창업해 일하고 있다. 지난 수년간 루씬과 솔라에 대한 강연을 해왔으며, 오라일리 네트워크나 IBM의 디벨로퍼웍스(developerWorks) 등에 루씬 관련 글을 여러 차례 기고했다. 얼마 전에는 자신의 경험을 살려 미국에서 공부하고자 하는 외국인을 대상으로 하는 『To Choose and Be Chosen: Pursuing Education in America』라는 책을 저술하기도 했다. 오티스는 현재 뉴욕 시에 살고 있으며, NY Search & Discovery 모임을 주도하고 있다.
펼치기
마이클 맥캔들리스 (지은이)    정보 더보기
이미 10년 이상 검색 엔진 분야에서 일하고 있다. 1999년에는 다른 세 명과 의기투합해 파이썬과 C++ 언어로 사용자 기반의 기업용 검색 엔진 소프트웨어를 개발하는 아이프레이즈 테크놀로지스(iPhrase Technologies)를 창업했다. 그리고 이 회사를 2005년에 IBM이 인수한 후, 루씬을 사용하기 시작한 마이클은 코드를 여러 번 고쳐 제공하기도 했다. 결국 2006년에는 루씬 프로젝트의 커미터가 됐고, 2008년에는 PMC 위원으로 활동하기 시작했다. 마이클은 MIT에서 학사, 석사, 박사를 마쳤고 현재 매사추세츠 주의 렉싱턴에서 아내와 네 아이 미아(Mia), 카이라(Kyra), 조엘(Joel), 카일(Kyle)과 함께 살고 있다. 마이클은 http://chbits.blogspot.com 블로그를 운영하고 있다.
펼치기
강철구 (옮긴이)    정보 더보기
컴퓨터 비전(영상 인식)을 전공했으며, 검색 엔진, 인공 지능, 모바일 등의 키워드에 관심이 많고, 현재 캐나다에서 소프트웨어 개발자로 일하고 있다. 에이콘출판사에서 출간한 『루씬 인 액션』(2005년)과 『Ajax 인 액션』(2006년), 『자바 병렬 프로그래밍』(2008년), 『알짜만 골라 배우는 안드로이드 프로그래밍』(2009년), 『아이폰북』(2009년), 『(개정판)알짜만 골라 배우는 안드로이드 프로그래밍2』(2010년), 『아이폰 개발자를 위한 아이패드 프로그래밍』(2010년)을 번역했다.
펼치기

추천도서

이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책