SlideShare a Scribd company logo
1 of 14
Download to read offline
홍은기
검색엔진 오픈소스
LUCENE
 Apache Lucene이라는 이름으로 Apache의 최상위 프로
젝트에 등록되어 있는 오픈 소스
 검색 애플리케이션의 핵심을 이루는 정보검색(IR,
Information Retrieval) 소프트웨어 라이브러리
LUCENE이란?
1. 가공되지 않은 컨텐츠를 수집.
2. 다큐먼트 생성: 가공되지 않은 컨텐츠로부터, 검색 애
플리케이션이 이해할 수 있는 다큐먼트를 생성.
3. 다큐먼트 분석: 색인 작업을 수행하기 전에, 다큐먼트
가 가지고 있는 내용의 어느 부분을 색인할 지 결정하기
위해 다큐먼트를 분석.
검색 애플리케이션의 작동과정
4. 다큐먼트 색인: 다큐먼트가 생성되고 분석된 다음에 다
큐먼트를 색인. 이러한 색인 작업을 통해서 다큐먼트의
내용 전체를 보지 않고 특정한 키만 가지고도 다큐먼트를
추출할 수 있음.
5. 검색을 위한 사용자 인터페이스: 색인으로 이루어진 데
이터베이스가 준비되었다면, 애플리케이션은 사용자가
검색할 수 있도록 사용자 인터페이스를 제공하여야 함.
검색 애플리케이션의 작동과정
6. 질의 생성: 사용자가 텍스트를 입력하면, 애플리케이션
은 색인 데이터베이스로부터 관련된 상세정보를 구하는
데 사용될 수 있는 질의 객체를 구성.
7. 질의 검색: 질의 객체를 사용하여 관련된 상세정보와
콘텐츠를 얻기 위해 색인 데이터베이스를 열람.
8. 결과 전시: 결과가 얻어지면, 애플리케이션은 사용자
인터페이스를 이용하여 결과를 전시.
루씬은 과정 2에서부터 과정 7까지의 역할을 수행.
검색 애플리케이션의 작동과정
• 색인부(indexer)
가공되지 않은 문서를 색인하는 부문
• 검색부(searcher)
색인부에서 생성된 색인을 이용해서 질문을 받아
관련된 문서를 검색하는 부문
COMPONENTS OF LUCENE
 색인부의 주요 클래스:
1. IndexWriter: 색인부의 핵심 클래스로서 색인을 만
들고 업데이트.
2. Directory: 색인의 저장공간을 관리.
3. Analyzer: 색인 작업이 수행될 텍스트로부터 토큰
(단어)를 추출하기 위해 다큐먼트를 분석.
4. Document: 필드로 구성되어 있는 가상의 문서, 분
석기는 다큐먼트만 이해할 수 있음.
5. Field: 색인 작업에서 사용되는 가장 작은 단위.
문서의 본문이나 제목, 파일경로와 같은 메타데이터
를 값으로 가짐.
INDEXER
INDEXING
INDEXING
 검색부의 주요 클래스:
1. IndexSearcher: 색인을 읽어 들이고 검색하는 검
색부의 핵심 클래스.
2. Term: 검색 작업에서 사용되는 가장 작은 단위.
3. Query: 색인을 검색하는 데 사용되는 질의.
4. QueryParser: 사용자가 입력한 텍스트를 분석하
여 질의로 변환시키는 작업을 수행.
5. TopDocs: 검색 조건에 부합하는 상위 N개의 검색
결과를 가리키는 클래스.
SEARCHER
SEARCHING
SEARCHING
SEARCHING
참조
 http://lucene.apache.org/
 https://en.Wikipedia.org/wiki/Lucene
 http://www.tutorialspoint.com/lucene/luce
ne_tutorial.pdf
 오티스 고스포드네티치, 에릭 헤쳐 (강철구 외 옮김).
2005. 루씬 인 액션. 에이콘출판주식회사

More Related Content

More from EunGi Hong

최소 편집 거리와 동적 프로그래밍
최소 편집 거리와 동적 프로그래밍최소 편집 거리와 동적 프로그래밍
최소 편집 거리와 동적 프로그래밍EunGi Hong
 
철자 교정기
철자 교정기철자 교정기
철자 교정기EunGi Hong
 
라틴어로 보는 컴퓨터 과학
라틴어로 보는 컴퓨터 과학라틴어로 보는 컴퓨터 과학
라틴어로 보는 컴퓨터 과학EunGi Hong
 
Android App Bar
Android App BarAndroid App Bar
Android App BarEunGi Hong
 
Haskell and Function
Haskell and FunctionHaskell and Function
Haskell and FunctionEunGi Hong
 
Wordswordswords
WordswordswordsWordswordswords
WordswordswordsEunGi Hong
 
Haskell and List
Haskell and ListHaskell and List
Haskell and ListEunGi Hong
 
Introduction to Natural Language Processing
Introduction to Natural Language ProcessingIntroduction to Natural Language Processing
Introduction to Natural Language ProcessingEunGi Hong
 
Ah Counter App 마무리
Ah Counter App 마무리Ah Counter App 마무리
Ah Counter App 마무리EunGi Hong
 
안드로이드 개발하기 3rd week
안드로이드 개발하기 3rd week안드로이드 개발하기 3rd week
안드로이드 개발하기 3rd weekEunGi Hong
 
안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd week안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd weekEunGi Hong
 
안드로이드 개발하기_1st
안드로이드 개발하기_1st안드로이드 개발하기_1st
안드로이드 개발하기_1stEunGi Hong
 
Python learning for Natural Language Processing (2nd)
Python learning for Natural Language Processing (2nd)Python learning for Natural Language Processing (2nd)
Python learning for Natural Language Processing (2nd)EunGi Hong
 
Python Learning for Natural Language Processing
Python Learning for Natural Language ProcessingPython Learning for Natural Language Processing
Python Learning for Natural Language ProcessingEunGi Hong
 

More from EunGi Hong (16)

최소 편집 거리와 동적 프로그래밍
최소 편집 거리와 동적 프로그래밍최소 편집 거리와 동적 프로그래밍
최소 편집 거리와 동적 프로그래밍
 
철자 교정기
철자 교정기철자 교정기
철자 교정기
 
라틴어로 보는 컴퓨터 과학
라틴어로 보는 컴퓨터 과학라틴어로 보는 컴퓨터 과학
라틴어로 보는 컴퓨터 과학
 
Android App Bar
Android App BarAndroid App Bar
Android App Bar
 
Haskell and Function
Haskell and FunctionHaskell and Function
Haskell and Function
 
Wordswordswords
WordswordswordsWordswordswords
Wordswordswords
 
Haskell and List
Haskell and ListHaskell and List
Haskell and List
 
Introduction to Natural Language Processing
Introduction to Natural Language ProcessingIntroduction to Natural Language Processing
Introduction to Natural Language Processing
 
Automata
AutomataAutomata
Automata
 
Ah Counter App 마무리
Ah Counter App 마무리Ah Counter App 마무리
Ah Counter App 마무리
 
Linguistics
LinguisticsLinguistics
Linguistics
 
안드로이드 개발하기 3rd week
안드로이드 개발하기 3rd week안드로이드 개발하기 3rd week
안드로이드 개발하기 3rd week
 
안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd week안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd week
 
안드로이드 개발하기_1st
안드로이드 개발하기_1st안드로이드 개발하기_1st
안드로이드 개발하기_1st
 
Python learning for Natural Language Processing (2nd)
Python learning for Natural Language Processing (2nd)Python learning for Natural Language Processing (2nd)
Python learning for Natural Language Processing (2nd)
 
Python Learning for Natural Language Processing
Python Learning for Natural Language ProcessingPython Learning for Natural Language Processing
Python Learning for Natural Language Processing
 

검색엔진 오픈 소스 Lucene

  • 2.  Apache Lucene이라는 이름으로 Apache의 최상위 프로 젝트에 등록되어 있는 오픈 소스  검색 애플리케이션의 핵심을 이루는 정보검색(IR, Information Retrieval) 소프트웨어 라이브러리 LUCENE이란?
  • 3. 1. 가공되지 않은 컨텐츠를 수집. 2. 다큐먼트 생성: 가공되지 않은 컨텐츠로부터, 검색 애 플리케이션이 이해할 수 있는 다큐먼트를 생성. 3. 다큐먼트 분석: 색인 작업을 수행하기 전에, 다큐먼트 가 가지고 있는 내용의 어느 부분을 색인할 지 결정하기 위해 다큐먼트를 분석. 검색 애플리케이션의 작동과정
  • 4. 4. 다큐먼트 색인: 다큐먼트가 생성되고 분석된 다음에 다 큐먼트를 색인. 이러한 색인 작업을 통해서 다큐먼트의 내용 전체를 보지 않고 특정한 키만 가지고도 다큐먼트를 추출할 수 있음. 5. 검색을 위한 사용자 인터페이스: 색인으로 이루어진 데 이터베이스가 준비되었다면, 애플리케이션은 사용자가 검색할 수 있도록 사용자 인터페이스를 제공하여야 함. 검색 애플리케이션의 작동과정
  • 5. 6. 질의 생성: 사용자가 텍스트를 입력하면, 애플리케이션 은 색인 데이터베이스로부터 관련된 상세정보를 구하는 데 사용될 수 있는 질의 객체를 구성. 7. 질의 검색: 질의 객체를 사용하여 관련된 상세정보와 콘텐츠를 얻기 위해 색인 데이터베이스를 열람. 8. 결과 전시: 결과가 얻어지면, 애플리케이션은 사용자 인터페이스를 이용하여 결과를 전시. 루씬은 과정 2에서부터 과정 7까지의 역할을 수행. 검색 애플리케이션의 작동과정
  • 6. • 색인부(indexer) 가공되지 않은 문서를 색인하는 부문 • 검색부(searcher) 색인부에서 생성된 색인을 이용해서 질문을 받아 관련된 문서를 검색하는 부문 COMPONENTS OF LUCENE
  • 7.  색인부의 주요 클래스: 1. IndexWriter: 색인부의 핵심 클래스로서 색인을 만 들고 업데이트. 2. Directory: 색인의 저장공간을 관리. 3. Analyzer: 색인 작업이 수행될 텍스트로부터 토큰 (단어)를 추출하기 위해 다큐먼트를 분석. 4. Document: 필드로 구성되어 있는 가상의 문서, 분 석기는 다큐먼트만 이해할 수 있음. 5. Field: 색인 작업에서 사용되는 가장 작은 단위. 문서의 본문이나 제목, 파일경로와 같은 메타데이터 를 값으로 가짐. INDEXER
  • 10.  검색부의 주요 클래스: 1. IndexSearcher: 색인을 읽어 들이고 검색하는 검 색부의 핵심 클래스. 2. Term: 검색 작업에서 사용되는 가장 작은 단위. 3. Query: 색인을 검색하는 데 사용되는 질의. 4. QueryParser: 사용자가 입력한 텍스트를 분석하 여 질의로 변환시키는 작업을 수행. 5. TopDocs: 검색 조건에 부합하는 상위 N개의 검색 결과를 가리키는 클래스. SEARCHER
  • 14. 참조  http://lucene.apache.org/  https://en.Wikipedia.org/wiki/Lucene  http://www.tutorialspoint.com/lucene/luce ne_tutorial.pdf  오티스 고스포드네티치, 에릭 헤쳐 (강철구 외 옮김). 2005. 루씬 인 액션. 에이콘출판주식회사