Search Results for '프로그래밍/Lucene'

2 POSTS

  1. 2013.08.28 Lucene Installation & Demo
  2. 2013.08.28 Lucene을 시작하며

Lucene Installation & Demo

Posted 2013. 8. 28. 12:36

아파치 프로젝트중 하나인 루씬은 자바로 구현된 오픈소스 검색엔진으로써, 검색에 조금이라도 관심을 가지고 있는 분이라면 한번쯤은 들어봤을 것입니다. 검색에 대한 전문지식이 없는 저로써는 항상 관심의 대상이긴 했으나 직접 다뤄볼 기회가 없었으나 이번에 큰맘(?) 먹고 제대로 파헤쳐보기로 했습니다.


우선 Lucene에 대한 정보를 얻기 위해서 프로젝트 사이트에 들어가봅니다.




그러고보니 Lucene의 로고 또한 제대로 보는건 처음인듯 싶습니다.

현재(2013년 08월 27일) 릴리즈 버전은 4.4.0이며 우측의 Download 버튼을 클릭하면 최신의 설치 바이너리르 얻을 수 있는 페이지로 이동합니다.




HTTP 링크 목록 중 하나를 선택하면 디렉토리 형태로 파일 목록을 볼 수 있으며, 현재의 최신버전인 lucene-4.4.0.zip 을 다운로드 받습니다.



Installation


설치 과정은 단순히 압축을 해제하는 것으로 마무리되며, D:\lucene-4.4.0 경로에 압축을 해제하여 설치를 끝냈습니다.



설치후 내용을 살펴보니 꽤나 많은 디렉토리들이 존재합니다. 각 디렉토리에 대한 용도는 추후 천천히 살펴보도록 하겠습니다. 저도 아직 파악이 안되거든요. ㅋ




Demo


홈페이지에서는 간단한 데모를 살펴볼 수 있는 튜토리얼을 제공합니다. (정말 간단해서 이게 끝이야 할 정도입니다.)





Lucene 메인 페이지에서 상단의 Core(Java) 탭을 클릭하면 Core와 관련된 페이지로 넘어가고, 동일한 위치에 탭 메뉴가 확장됩니다. 이 중 Tutorials 탭을 클릭하면 하단에 현재 버전의 튜토리얼 페이지로 이동할 수 있는 링크(Lucene 4.4 Demo)가 표시됩니다.


이 페이지의 내용을 중심으로 데모 실행 과정을 설명하도록 하겠습니다.



Setting CLASSPATH


데모 실행을 위해서는 필요한 JAR 파일을 Classpath로 설정해줘야 하고 필요한 JAR 파일은 아래와 같습니다.

  • ${lucene_directory}\core\lucene-core-4.4.0.jar
  • ${lucene_directory}\analysis\common\lucene-analyzers-common-4.4.0.jar
  • ${lucene_directory}\demo\lucene-demo-4.4.0.jar
  • ${lucene_directory}\queryparser\lucene-queryparser-4.4.0.jar

위 JAR 파일을 데모 실행시 CLASSPATH에 지정해줘야 정상적으로 실행됩니다. 다만 매 실행시 마다 이걸 입력하는 것은 매우 귀찮은 일이므로 배치 스크립트를 만들어두면 편할 것 같아 저의 경우는 setenv.cmd 스크립트를 만들어뒀습니다.


@echo off


set LUCENE_HOME=D:\lucene-4.4.0

echo '---- Setting Lucene home directory. ----'

echo %LUCENE_HOME%


set CLASSPATH=%LUCENE_HOME%\core\lucene-core-4.4.0.jar;%LUCENE_HOME%\analysis\common\lucene-analyzers-common-4.4.0.jar;%LUCENE_HOME%\demo\lucene-demo-4.4.0.jar;%LUCENE_HOME%\queryparser\lucene-queryparser-4.4.0.jar;

echo '---- Setting Java classpath. ----'

echo %CLASSPATH%

위 내용을 setenv.cmd 라는 파일에 저장하고 데모 실행 전에 한번 실행해주면 좀더 손이 편해지겠죠. 혹은 아예 데모까지 실행하는 명령까지 추가를 한다면 스크립트 한번으로 데모가 실행되겠군요.


Indexing Files


파일로 저장되어 있는 문서를 색인화 하는 단계입니다. 커맨드 상에서 아래와 같이 입력하면 문서 파일을 색인하는 과정이 수행됩니다. 다만, 어찌된 영문인지 홈페이지상에는 색인 대상 문서의 경로를 {path-to-lucene}/src 로 지정하라고 설명하고 있지만 제가 설치한 Lucene의 디렉토리에는 src라는 디렉토리가 없었습니다. (물론 따로 source를 다운받아 설치 할 수도 있습니다.)


색인 대상을 src로 지정하라는 이유는 아무래도 API Document를 색인하기 위해서인것 같습니다. 따라서 API Document 경로만 제대로 지정해주면 될 것 같았는데, 마침 설치된 Lucene 디렉토리 아래 docs라는 디렉토리가 있었고 여기에서 API Document를 찾을 수 있었습니다.


아래는 최종 색인 실행 명령입니다.

java org.apache.lucene.demo.IndexFiles -docs D:\lucene-4.4.0\docs


아래는 색인을 실행한 화면입니다.



html, css, js 할것 없이 죄대 색인해버렸네요. 파일 갯수를 파악하긴 어려우나 꽤 많은 문서들을 색인했습니다. 색인 시간은 10104 milliseconds 였구요.


Searching


색인이 끝났으므로 이제 검색이 가능하게 되었습니다. 검색을 위한 데모 어플리케이션도 따로 있는데 실행 방법은 아래와 같습니다. 물론, CLASSPATH가 설정되어 있어야 정상적으로 실행 됩니다.


java org.apache.lucene.demo.SearchFiles


위 명령을 실행하면 검색어 입력을 받기위해 대기 프롬프트 상태가 되는데 키워드를 입력하게 되면 검색된 결과가 출력이 됩니다.




색인된 모든 문서가 영문이므로 한글 검색이 지원되진 않습니다. 또한 한글 문서가 있다 하더라도 공백이나 특수문자 등을 기반으로 term이 분리되기 때문에 진정한 한글 검색이 지원되지는 않을 것입니다.


한글 검색을 제대로 구현하기 위해서는 한글 형태소 분석기가 있어야 하며, 향후 오픈소스 형태소 분석기도 적용해서 한글 검색도 가능하게 해볼 계획입니다.


'프로그래밍 > Lucene' 카테고리의 다른 글

Lucene Installation & Demo  (0) 2013.08.28
Lucene을 시작하며  (0) 2013.08.28
Write your message and submit

Lucene을 시작하며

Posted 2013. 8. 28. 12:16

검색과 관련된 회사에서 검색과 관련된 일을 하면서 정작 코어는 잘 알지 못하는 아이러니한 상태로 8년의 개발자 생활을 해왔습니다. 뭐 담당하는 파트가 다르다보니 실제 핵심 기술을 접해볼 기회가 없었고, 개인적인 시간을 할애하여 공부를 해보는 것도 부담이었던 것 같네요.


아무튼, 거두절미하고 오랫동안 계획만 있고 실천하지 못했던 Lucene 파헤치기(?)를 이제부터 시작하려 합니다. 스스로 터득해가면서 블로그에도 조금씩 정리하고, 관련된 포스트가 쌓이고 쌓이면 좋은 지식창고가 될 것 같습니다. 저는 언제나 지식 공유를 추구하니까요~


Lucene forum은 물론 항상 옆에두고 참고해야 할 서적이 필요해서 찾아봤습니다. 꽤 오래전에 '루씬 인 액션'이란 책을 누군가 가지고 있는걸 봤는데 오래전 일이라 최신 버전과의 호환성 문제도 있고 해서 최신판이 없을까 하고 찾아본 결과.




두둥..!


개정판 루씬 인 액션 - 두번째 에디션


이것을 찾았습니다.

2013년 08월에 출간된 최신판이긴 하지만 Apache Lucene 3.0을 기반으로 하기 때문에 가장 최근에 릴리즈된 4.4.0 버전과의 호환성은 어떠할지 예측이 되지 않습니다. 하지만 4.4.0 버전이라 하더라도 기존의 버전에서 크게 바뀐건 없다라고 생각되어 일단 주문은 해뒀습니다. (예약판매라 9월3일이나 되어야 받을 수 있다네요. ;;;)


Lucene 홈페이지에 관련된 튜토리얼을 참고 할 수 있으므로 우선은 설치와 튜토리얼을 통해 샘플 코드를 파악해봐야겠습니다. Lucene과 관련한 기술과 지식들이 만만한 분량이 아니기 때문에 부담은 되지만, 칼을 뽑았으면 무라도 썰어야겠죠. (샘플만 하고 끝내기...? ㅎㅎ)


아참, Lucene의 sub project인 Solr도 함께 공부해볼 예정이며 더 나아가 Hadoop, ManifoldCF, Nutch 등도 접근해볼 것입니다.

'프로그래밍 > Lucene' 카테고리의 다른 글

Lucene Installation & Demo  (0) 2013.08.28
Lucene을 시작하며  (0) 2013.08.28
Write your message and submit