티스토리 뷰

database

[Database] 루씬(Lucene)

tonirr 2020. 9. 27. 11:05
  • 루씬이란?

    • 자바로 개발된 오픈소스 정보검색(IR, Information Retrieval)라이브러리

    • 독립된 프로그램이 아닌 소프트웨어 라이브러리

      • 루씬 설치후 사용자가 루씬 라이브러리를 사용하여 검색서비스, 어플리케이션을 구현해야 함

    • 프로그램에 텍스트 색인과 검색 기능을 추가할 수 있도록 지원함

    • Inverted Indexing 을 생성하여 사용함

      • Indexing 과정

        • Token scan: Text를 띄어쓰기 단위로 분리

        • Token Analysis: 불용어나 조사등을 뗴어내고 원형을 만듦

        • Frequency counting: 해당단어가 몇번 반복되는지를 Hash table에 저장

        • Sort: 검색이 용이하도록 정렬

        • Encoding: 디스크에 저장할 때 용량을 줄이기 위해 encoding함

  • Indexing과 검색 적용이 가능한 사례

    • 이메일 검색: 저장된 메시지를 검색할 수 있음

      • 새로도착한 메시지를  색인에 추가할 수 있는 이메일 어플리케이션

    • 온라인 문서 검색: 온라인 문서 또는 저장된 출판물을 검색할 수 있음 CD기반이나 웹기반 또는 어플리케이션에 포함된 문서 판독기

    • 웹 페이지 검색: 사용자가 방문한 모든 웹페이지를 색인화하기 위해 개인 검색 엔진을 만들 수 있는 웹브라우저 또는 프록시 서버

    • 내용 검색: 저장된 문서에서 특정 내용을 검색할 수 있는 어플리케이션

    • 버전관리 및 컨텐트 관리: 뉴스가 도착했을 떄 기사를 색인할 수 있는 뉴스 서버나 릴레이 서버

    • 뉴스 및 유선(wire) 서비스: 뉴스가 도착했을 때 기사를 색인할 수 있는 뉴스 서버나 릴레이 서버

  • 루씬의 기능

    • 색인을 저장할 수 있는 곳

      • RAMDirectory

        • 컴퓨터의 메인 메모리를 색인 장소로 사용

      • FSDirectory

        • 디스크 파일 시스템에 색인을 저장

      • JDBCDirectory

        • DB를 색인 저장소로 사용하는 방법

        • 일반적으로 지원하지는 않지만 별도의 루씬 샌드박스라는 것을 통해 지원

    • 색인 기능 지원

    • 검색 기능 지원

    • 다양한 나라의 Full Text 분석기 지원(아시아권의 언어는 잘 지원되지 않음)

    • Hadoop을 분산 파일 시스템으로 사용할 수 있음

  • 해석(parse)의 필요성

    • 실전에서는 단순한 문자열 색인보다 다양한 문서를 indexing하고 검색하는 작업이 빈번함

    • XML, PDF, HTML, MS WORD와 같이 다양한 문서들을 색인화 하기위해 각각의 문서를 루씬의 Analyzer가 이해할 수 있도록 해석(parse)해서 텍스트로 추충해 내는 과정이 필요함

  • 결론

    • Full Text를 검색하는데 효율적임

    • Full Text와 text를 단어로 쪼개는 방법을 제시하면 알아서 index를 구성해주며 빠른 검색 결과를 얻을 수 있음

'database' 카테고리의 다른 글

[Database] 데이터 모델링 - 데이터 성능  (0) 2021.03.01
[Database] 데이터 모델링 - 데이터 모델링의 개요  (0) 2021.03.01
[Database] NoSQL  (0) 2020.08.30
auto increment  (0) 2020.04.13
DBeaver 단축키  (0) 2020.04.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함