책 이미지
책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > 자바
· ISBN : 9788960775565
· 쪽수 : 1184쪽
책 소개
목차
『(개정판) 루씬 인 액션』
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장 문제 해결
____개요
____너무 많이 열린 파일 처리
____메모리 부족 문제 해결
____비영어권 자료의 적절한 정렬
____색인을 작게 만들기
____솔라 문제 진단
____스와핑 피하기
부록: 실제 상황