"루씬"의 두 판 사이의 차이
(→참고자료) |
|||
(사용자 2명의 중간 판 10개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | [[파일:루신 로고.png|썸네일|200픽셀|'''루씬'''(Lucene) | + | [[파일:루신 로고.png|썸네일|200픽셀|'''루씬'''(Lucene)]] |
− | [[파일:루신 글자.png|썸네일|300픽셀|'''루씬'''(Lucene) | + | [[파일:루신 글자.png|썸네일|300픽셀|'''루씬'''(Lucene)]] |
+ | [[파일:일래스틱서치 글자.png|썸네일|300픽셀|'''[[일래스틱서치]]'''(Elastic Search)]] | ||
− | '''루씬'''(Lucene)은 [[자바]](Java) 언어로 개발된 [[오픈소스]] 정보 검색 라이브러리이다. 1999년 [[더그 커팅]]에 의해 개발되었다. 루씬 개발 프로젝트는 [[아파치재단]]이 관리하는 최상위 프로젝트이다. '''아파치 루씬'''(Apache Lucene)이라고 한다. | + | '''루씬'''(Lucene)은 [[자바]](Java) 언어로 개발된 [[오픈소스]] 정보 검색 라이브러리이다. 1999년 [[더그 커팅]]에 의해 개발되었다. 루씬 개발 프로젝트는 [[아파치재단]]이 관리하는 최상위 프로젝트이다. '''아파치 루씬'''(Apache Lucene)이라고 한다. 루씬을 기반으로 '''[[일래스틱서치]]'''(Elastic Search) 검색엔진이 개발되었다. |
== 개요 == | == 개요 == | ||
10번째 줄: | 11번째 줄: | ||
루씬은 다양한 프로젝트와 어플리케이션에서 검색 엔진으로 사용되고 있으며, 오픈소스 검색 애플리케이션의 양대 축 Solr와 Elasticsearch에서 검색 엔진으로 사용되고 있다. 최근 Solr 프로젝트가 아파치 소프트웨어 재단으로 이관되면서 루씬과 통합되어 개발되고 있다. | 루씬은 다양한 프로젝트와 어플리케이션에서 검색 엔진으로 사용되고 있으며, 오픈소스 검색 애플리케이션의 양대 축 Solr와 Elasticsearch에서 검색 엔진으로 사용되고 있다. 최근 Solr 프로젝트가 아파치 소프트웨어 재단으로 이관되면서 루씬과 통합되어 개발되고 있다. | ||
− | |||
− | |||
− | |||
− | |||
== 역사 == | == 역사 == | ||
37번째 줄: | 34번째 줄: | ||
* 2019년 03월 14일 : 루씬 8.0.0 출시<ref name="루씬 사이트"></ref> | * 2019년 03월 14일 : 루씬 8.0.0 출시<ref name="루씬 사이트"></ref> | ||
* 2019년 07월 26일 : 루씬 8.2.0 출시<ref name="루씬 사이트"></ref> | * 2019년 07월 26일 : 루씬 8.2.0 출시<ref name="루씬 사이트"></ref> | ||
+ | |||
+ | == 검색 엔진 작동 원리 == | ||
+ | 검색엔진은 [[링크]]와 [[텍스트]] 기반 인식 기본이다. [[크롤러]]가 방문한 웹 페이지에서 새로운 링크를 발견하면 웹 서버에 데이터 정보를 요청하고 이때 웹 서버는 검색엔진에게 웹 페이지 정보를 보내는데 이것이 바로 메타태그가 포함된 사이트 정보다. 크롤러는 그렇게 추가된 수집한 URL에서 단어와 문구를 분리하여 저장한다. 저장과정에서 각 단어와 문구(쿼리)에서 가중치(weight)와 연관도(relevance)를 부여하고 최종 결과 값을 인덱스(색인)한다. | ||
+ | |||
+ | 검색자가 검색창에 검색어를 입력하면 그 때 필요한 것을 끄집어 내는 것이 아니라 검색엔진이 미리 구축해 두었던 인덱스(색인)을 검색하는 것이다. 이 과정이 없으면 검색 결과를 얻기까지 엄청난 시간이 소요된다. | ||
== 특징 == | == 특징 == | ||
확장 가능한 고성능 정보검색 라이브러리로, 소프트웨어 프로그램에 색인과 검색 기능을 간단하게 추가할 수 있도록 지원한다. 라이선스는 아파치 라이선스 2.0을 사용하고 있으며, 운영 체제는 크로스 플랫폼을 이용하고 있다. 또한 루씬 사용 시 검색과 관련한 전문적인 지식은 필요하지 않으며, 간단한 사용법들만 익히면 색인과 검색 기능을 직접 추가할 수 있다. 또한 자바로 만들어졌지만 [[파이썬]], [[C++]] 등의 언어로 사용할 수 있다.<ref name="루신">linuxism, 〈[https://linuxism.ustd.ip.or.kr/898 루씬(Lucene) 개요 및 원리]〉, 《개인 블로그》, 2012-09-24</ref> | 확장 가능한 고성능 정보검색 라이브러리로, 소프트웨어 프로그램에 색인과 검색 기능을 간단하게 추가할 수 있도록 지원한다. 라이선스는 아파치 라이선스 2.0을 사용하고 있으며, 운영 체제는 크로스 플랫폼을 이용하고 있다. 또한 루씬 사용 시 검색과 관련한 전문적인 지식은 필요하지 않으며, 간단한 사용법들만 익히면 색인과 검색 기능을 직접 추가할 수 있다. 또한 자바로 만들어졌지만 [[파이썬]], [[C++]] 등의 언어로 사용할 수 있다.<ref name="루신">linuxism, 〈[https://linuxism.ustd.ip.or.kr/898 루씬(Lucene) 개요 및 원리]〉, 《개인 블로그》, 2012-09-24</ref> | ||
+ | |||
+ | == 기능 == | ||
+ | === 검색과 생인 === | ||
+ | 루씬은 빠른 검색 응답(fast search response)을 성취할 수 있다. 텍스트를 직접적으로 검색하는 대신에 루씬은 인덱스로 검색하기 때문이다. 이것은 책의 맨 마지막에 색인을 이용해 관련된 키워드를 검색해 페이지를 찾는 것과 같다고 볼 수 있다. | ||
+ | === 문서 === | ||
+ | 루씬에서는 하나의 문서(Document)는 검색과 인덱스의 단위다. 하나의 인덱스는 하나 또는 그 이상의 문서로 구성되어 있다. | ||
+ | === 분야 === | ||
+ | 하나의 문서는 하나의 또는 그 이상의 분야(Fields)로 구성되어 있다. 하나의 Field는 단순한 이름과 값(name-value)으로 된 쌍이다. 예시로 애플리케이션에서 사용되는 하나의 문서는 타이틀이다. 타이틀 문서의 경우, 문서 이름은 타이틀이고, 값은 그 내용의 제목이다. | ||
+ | |||
+ | 루씬에서 인덱싱은 분야(Fields)로 구성되어있는 문서(Documents)를 만드는 것과, 이러한 문서를 IndexWriter에 추가하는 것을 포함한다. | ||
+ | === 쿼리 === | ||
+ | 루씬은 검색을 수행하는데 있어 루씬의 고유 Mini-languge를 가지고 있다.<ref>〈[http://www.lucenetutorial.com/lucene-query-syntax.html LuceneTutorial.com]〉, 《루씬 공식 사이트》</ref> | ||
+ | |||
+ | 루씬 쿼리 언어(Lucene Query Language)는 사용자가 검색을 위해 어떤 Field(s)를 사용할지, 어떤 Field(s)에 더 중접을 둘지, Boolean qeury(AND, OR,NOT)의 수행할수 있는 능력, 그 밖에 다른 기능들을 사용할수 있게 해준다. | ||
== 활용 == | == 활용 == | ||
− | * | + | * 이메일 검색 : 저장된 메시지를 검색, 새로 도착한 메세지를 색인에 추가할 수 있다.<ref name="루신"></ref> |
− | * | + | * 온라인 문서 검색 : 온라인 문서나 저장된 출판물을 검색할 수 있는 CD 또는 웹 기반에 포함된 문서 판독기 역할을 할 수 있다.<ref name="루신"></ref> |
− | * | + | * 버전 관리 및 콘텐츠 관리 : 문서나 문서 버전을 색인화하여 쉽게 검색할 수 있도록 하는 시스템이다.<ref name="루신"></ref> |
− | * | + | * 웹 페이지 검색 : 사용자가 방문한 모든 웹 페이지를 색인화하기 위해 개인 검색 엔진을 만들 수 있는 웹 브라우저 또는 [[프록시]] 서버이다. |
− | * | + | * 내용 검색 : 저장된 문서에서 특정 내용 검색할 수 있다. |
− | * | + | * 뉴스 및 유선 서비스 : 뉴스가 도착했을 때 기사를 색인할 수 있는 뉴스 서버나 릴레이 서버이다. |
+ | |||
+ | == 루씬 기반 프로젝트 == | ||
+ | * Apache Nutch : 웹 기어 및 HTML 구문 분석 기능 제공 | ||
+ | * Apache Solr : 엔터프라이즈 검색 서버 | ||
+ | * Compass : 루씬을 기반으로 구축된 오픈 소스 분산 SQL 데이터베이스 | ||
+ | * DocFetcher : 다중 형식 데스크톱 검색 응용 프로그램 | ||
+ | * Elastic Search : 2010년에 출시된 엔터프라이즈 검색 서버 | ||
+ | * Kinosearch : [[Perl]]과 Cand에서 작성된 검색 엔진 | ||
+ | * Swiftype : 루씬을 기반으로 한 엔터프라이즈 검색 시작 | ||
== 한계 == | == 한계 == | ||
59번째 줄: | 84번째 줄: | ||
* 〈[http://lucene.apache.org/core/4_8_0/changes/Changes.html#v4.7.0 Lucene Change Log]〉, 《루씬 공식 사이트》 | * 〈[http://lucene.apache.org/core/4_8_0/changes/Changes.html#v4.7.0 Lucene Change Log]〉, 《루씬 공식 사이트》 | ||
* 〈[https://lucene.apache.org/ Welcome to Apache Lucene]〉, 《루씬 공식 사이트》 | * 〈[https://lucene.apache.org/ Welcome to Apache Lucene]〉, 《루씬 공식 사이트》 | ||
+ | * 〈[https://en.wikipedia.org/wiki/Apache_Lucene Apache Lucene]〉, 《위키백과》 | ||
== 같이 보기 == | == 같이 보기 == | ||
66번째 줄: | 92번째 줄: | ||
* [[오픈소스]] | * [[오픈소스]] | ||
− | {{ | + | {{솔루션|검토 필요}} |
2020년 9월 12일 (토) 00:52 기준 최신판
루씬(Lucene)은 자바(Java) 언어로 개발된 오픈소스 정보 검색 라이브러리이다. 1999년 더그 커팅에 의해 개발되었다. 루씬 개발 프로젝트는 아파치재단이 관리하는 최상위 프로젝트이다. 아파치 루씬(Apache Lucene)이라고 한다. 루씬을 기반으로 일래스틱서치(Elastic Search) 검색엔진이 개발되었다.
목차
개요[편집]
루씬은 최초 1999년 더크 커팅의 개인적인 관심에 의해 시작되었으며 2003년 3월 버전 0.01이 SourceForge 사이트에 최초 공개 되었다.
루씬은 고성능 정보 검색 IR(Information retrieval) 라이브러리다. IR은 문서를 검색하거나, 문서와 연관된 메타 정보를 검색하는 과정을 말한다. 루씬을 사용하면 개발하고자 하는 어플리케이션에 정보 검색 기능을 손쉽게 추가할 수 있다. 자바로 구현되어 있고 아파치 소프트웨어 재단에서 아파치 소프트웨어 라이센스로 배포중이다.
루씬은 다양한 프로젝트와 어플리케이션에서 검색 엔진으로 사용되고 있으며, 오픈소스 검색 애플리케이션의 양대 축 Solr와 Elasticsearch에서 검색 엔진으로 사용되고 있다. 최근 Solr 프로젝트가 아파치 소프트웨어 재단으로 이관되면서 루씬과 통합되어 개발되고 있다.
역사[편집]
- 1999년 : 더크 커팅에 의해 최초 개발
- 2000년 03월 : 루씬 0.01 SourceForge 사이트에 최초 공개
- 2000년 10월 04일 : 루씬 1.0 출시, 버그 수정 및 성능 최적화[1]
- 2005년 : 아파치 재단의 최상위 프로젝트로 등록
- 2006년 02월 27일 : 루씬 1.9 최종 출시, 버그 수정 및 최적화[1]
- 2007년 06월 19일 : 루씬 2.2.0 출시, RemoteSearcher 및 기타 Searchable 구현과 함께 사용할 수 있도록 FieldSelector 기능을 Searchable 추가[1]
- 2008년 10월 08일 : 루씬 2.4.0 출시, BitVector.subset () 추가[1]
- 2009년 11월 25일 : 루씬 3.0.0 출시, 모든 기본 속성에 대한 토큰 인스턴스를 작성하는 편리한 AttributeFactory 제공[1]
- 2011년 07월 01일 : 루씬 3.3.0 출시, 다양한 샤드 (Uwe Schindler, Mike McCandless)의 결과를 쉽게 병합 할 수 있도록 TopDocs.merge 추가[1]
- 2012년 08월 13일 : 루씬 4.0.0 베타, BasicAutomata.makeStringUnion 메소드 추가[1]
- 2012년 10월 12일 : 루씬 4.0.0 출시[1]
- 2013년 10월 05일 : 루씬 4.5.0 출시[2]
- 2013년 11월 24일 : 루씬 4.6.0 출시[2]
- 2014년 02월 26일 : 루씬 4.7.0 출시, 대문자 토큰을 만들기 위한 UpperCaseFilter 추가[1]
- 2014년 03월 12일 : 루씬 4.8.0 출시[2]
- 2016년 04월 08일 : 루씬 6.0.0 출시[2]
- 2017년 03월 27일 : 루씬 6.5.0 출시[2]
- 2017년 09월 20일 : 루씬 7.0.0 출시[2]
- 2018년 09월 24일 : 루씬 7.5.0 출시[2]
- 2019년 03월 14일 : 루씬 8.0.0 출시[2]
- 2019년 07월 26일 : 루씬 8.2.0 출시[2]
검색 엔진 작동 원리[편집]
검색엔진은 링크와 텍스트 기반 인식 기본이다. 크롤러가 방문한 웹 페이지에서 새로운 링크를 발견하면 웹 서버에 데이터 정보를 요청하고 이때 웹 서버는 검색엔진에게 웹 페이지 정보를 보내는데 이것이 바로 메타태그가 포함된 사이트 정보다. 크롤러는 그렇게 추가된 수집한 URL에서 단어와 문구를 분리하여 저장한다. 저장과정에서 각 단어와 문구(쿼리)에서 가중치(weight)와 연관도(relevance)를 부여하고 최종 결과 값을 인덱스(색인)한다.
검색자가 검색창에 검색어를 입력하면 그 때 필요한 것을 끄집어 내는 것이 아니라 검색엔진이 미리 구축해 두었던 인덱스(색인)을 검색하는 것이다. 이 과정이 없으면 검색 결과를 얻기까지 엄청난 시간이 소요된다.
특징[편집]
확장 가능한 고성능 정보검색 라이브러리로, 소프트웨어 프로그램에 색인과 검색 기능을 간단하게 추가할 수 있도록 지원한다. 라이선스는 아파치 라이선스 2.0을 사용하고 있으며, 운영 체제는 크로스 플랫폼을 이용하고 있다. 또한 루씬 사용 시 검색과 관련한 전문적인 지식은 필요하지 않으며, 간단한 사용법들만 익히면 색인과 검색 기능을 직접 추가할 수 있다. 또한 자바로 만들어졌지만 파이썬, C++ 등의 언어로 사용할 수 있다.[3]
기능[편집]
검색과 생인[편집]
루씬은 빠른 검색 응답(fast search response)을 성취할 수 있다. 텍스트를 직접적으로 검색하는 대신에 루씬은 인덱스로 검색하기 때문이다. 이것은 책의 맨 마지막에 색인을 이용해 관련된 키워드를 검색해 페이지를 찾는 것과 같다고 볼 수 있다.
문서[편집]
루씬에서는 하나의 문서(Document)는 검색과 인덱스의 단위다. 하나의 인덱스는 하나 또는 그 이상의 문서로 구성되어 있다.
분야[편집]
하나의 문서는 하나의 또는 그 이상의 분야(Fields)로 구성되어 있다. 하나의 Field는 단순한 이름과 값(name-value)으로 된 쌍이다. 예시로 애플리케이션에서 사용되는 하나의 문서는 타이틀이다. 타이틀 문서의 경우, 문서 이름은 타이틀이고, 값은 그 내용의 제목이다.
루씬에서 인덱싱은 분야(Fields)로 구성되어있는 문서(Documents)를 만드는 것과, 이러한 문서를 IndexWriter에 추가하는 것을 포함한다.
쿼리[편집]
루씬은 검색을 수행하는데 있어 루씬의 고유 Mini-languge를 가지고 있다.[4]
루씬 쿼리 언어(Lucene Query Language)는 사용자가 검색을 위해 어떤 Field(s)를 사용할지, 어떤 Field(s)에 더 중접을 둘지, Boolean qeury(AND, OR,NOT)의 수행할수 있는 능력, 그 밖에 다른 기능들을 사용할수 있게 해준다.
활용[편집]
- 이메일 검색 : 저장된 메시지를 검색, 새로 도착한 메세지를 색인에 추가할 수 있다.[3]
- 온라인 문서 검색 : 온라인 문서나 저장된 출판물을 검색할 수 있는 CD 또는 웹 기반에 포함된 문서 판독기 역할을 할 수 있다.[3]
- 버전 관리 및 콘텐츠 관리 : 문서나 문서 버전을 색인화하여 쉽게 검색할 수 있도록 하는 시스템이다.[3]
- 웹 페이지 검색 : 사용자가 방문한 모든 웹 페이지를 색인화하기 위해 개인 검색 엔진을 만들 수 있는 웹 브라우저 또는 프록시 서버이다.
- 내용 검색 : 저장된 문서에서 특정 내용 검색할 수 있다.
- 뉴스 및 유선 서비스 : 뉴스가 도착했을 때 기사를 색인할 수 있는 뉴스 서버나 릴레이 서버이다.
루씬 기반 프로젝트[편집]
- Apache Nutch : 웹 기어 및 HTML 구문 분석 기능 제공
- Apache Solr : 엔터프라이즈 검색 서버
- Compass : 루씬을 기반으로 구축된 오픈 소스 분산 SQL 데이터베이스
- DocFetcher : 다중 형식 데스크톱 검색 응용 프로그램
- Elastic Search : 2010년에 출시된 엔터프라이즈 검색 서버
- Kinosearch : Perl과 Cand에서 작성된 검색 엔진
- Swiftype : 루씬을 기반으로 한 엔터프라이즈 검색 시작
한계[편집]
루씬을 이용하여 개발할 수는 있지만 각각에 대한 전용 라이브러리를 지원하진 않는다. 또한 내용을 단어로 나누는 방법을 구현해야 하며, 국어에 대한 이해를 기반으로 구현하는 것이 어렵다고 한다.[3]
각주[편집]
참고자료[편집]
- linuxism, 〈linuxism 블로그〉, 《개인 블로그》, 2012-09-24
- 나데다, 〈Lucene〉, 2014-11-17
- 〈Lucene Change Log〉, 《루씬 공식 사이트》
- 〈Welcome to Apache Lucene〉, 《루씬 공식 사이트》
- 〈Apache Lucene〉, 《위키백과》
같이 보기[편집]