기본 콘텐츠로 건너뛰기

CentOS에서 검색서버 Solr와 한글 형태소 분석기 Arirang 설치하기



오픈소스 검색엔진인 Lucene(루씬)은 강력한 기능을 가지고 있지만 그 자체로 완성된 검색 서비스가 아니기 때문에 사용하려면 손이 많이 가는 편입니다. 루씬의 서브 프로젝트인 Solr(솔라)는 루씬을 기반으로 한 검색서버로서 루씬을 직접 다루는 것보다 좀더 쉽게 검색 서비스를 만들 수가 있습니다.

이 글에서는 CentOS 6에서 솔라 4.5.1과 루씬/솔라에서 사용할 수 있는 한글 형태소 분석기인 Arirang(아리랑)을 설치하는 방법에 대해 알아보도록 하겠습니다.

1. 솔라 설치하기

솔라 홈페이지(https://lucene.apache.org/solr/)에서 설치 파일을 다운받습니다. 현재 최신 버전은 4.7이나 아직까지 한글 형태소 분석기인 아리랑이 정상 작동하는 것은 4.5.1까지이기에 이 버전을 다운받습니다. 아리랑은 네이버 '루씬 한글분석기 오픈소스 프로젝트' 카페에서 다운받을 수 있습니다.

솔라 설치를 시작하기 전에 톰캣 설치를 미리 하셔야 합니다. 솔라 자체적으로 경량의 서블릿 컨테이너를 가지고 있지만 정식 서비스를 위해서는 별도 서블릿 컨테이너를 설치하는 것이 좋습니다.

다운받은 솔라 설치파일의 압축을 풀고 example 디렉토리의 multicore 디렉토리를 솔라를 설치할 디렉토리로 복사합니다. 여기서는 /var/www 밑에 설치하며 multicore 디렉토리를 solr라는 이름으로 바꾸어 복사합니다. 즉, 솔라 홈디렉토리는 /var/www/solr 가 되는 것이죠. 다른 디렉토리를 솔라 홈디렉토리로 하였다면 밑에 내용에도 그 부분을 생각하고 읽어주시면 됩니다.

example 디렉토리의 multicore는 여러 개의 웹사이트를 개별로 인덱싱하는 상황의 예제 디렉토리입니다. 하나의 웹사이트만 있다면 example 디렉토리의 solr 디렉토리를 복사하시면 됩니다.

솔라 홈디렉토리까지 만들었다면 dist 디렉토리의 solr-4.5.1.war 파일을 /var/www/solr 로 복사하고 /var/www/solr 디렉토리에 있는 solr.xml 파일의 내용 중 <solr persistent="false">로 되어 있는 것을 <solr persistent="true">로 수정합니다. 이것은 어드민 페이지나 API를 통한 코어 변경 사항을 다음 서비스 재시작에도 유지하기 위한 것입니다.

마지막으로 /var/www/solr 디렉토리 전체를 tomcat 유저 소유권으로 변경한 후 example/lib/ext 디렉토리 밑에 있는 jar 파일들 중 log4j-1.2.16.jar을 제외하고 /usr/share/tomcat6/lib 로 복사한 후 example/resources 디렉토리 안에 있는 log4j.properties 파일도 같은 디렉토리로 복사합니다. log4j-1.2.16.jar 파일을 제외한 것은 CentOS 6의 톰캣 6에는 기본으로 포함되어 있기 때문입니다.

2. 톰캣 설정

/etc/tomcat6/Catalina/localhost 디렉토리에 solr.xml 파일 생성하고 다음 내용을 입력합니다. 솔라 홈디렉토리를 /var/www/solr 가 아닌 다른 디렉토리로 하였다면 그 디렉토리로 수정해 입력합니다.

<?xml version="1.0" encoding="utf-8"?>
<Context docBase="/var/www/solr/solr.war" debug="0" crossContext="true">
    <Environment name="solr/home" type="java.lang.String" value="/var/www/solr" override="true"/>
</Context>

여기까지 하고 톰캣을 재시작한 후 솔라 어드민 페이지(http://서버주소:8080/solr/)로 접속하면 관리자 페이지를 볼 수 있습니다. 저의 경우는 관리자 페이지에서 에러가 났는데 기존 multicore 디렉토리에 기본으로 있던 코어들을 삭제하고 신규로 만드니 에러가 사라졌습니다.

3. 한글 형태소 분석기 설치

네이버 '루씬 한글분석기 오픈소스 프로젝트' 카페에서 다운받은 파일의 압축을 풀고 나온 파일들 중 arirang-1.1.2.jar 파일은 /var/lib/tomcat6/webapps/solr/WEB-INF/lib 에 복사합니다. 같은 압축파일에 들어 있는 schema.xml 파일의 내용은 /var/www/solr/사용할코어/conf 디렉토리의 schema.xml 파일의 <types> 태그 안에 복사해 넣습니다.

위 작업을 한 후 바로 톰캣에서 확인을 하면 무슨 파일이 없다라는 에러가 납니다. 'protwords.txt, stopwords.txt, synonyms.txt' 파일들인데 사전 데이터 파일로 생각됩니다. 사전 데이터가 없을 경우는 그냥 빈 파일들을 /var/www/solr/사용할코어/conf 디렉토리에 만들어주시면 됩니다. 사용하는데는 사전 데이터가 없어도 문제는 없습니다.

위 과정까지 되었다면 기본 설정은 끝난 것입니다. 아래 스크린샷처럼 솔라 관리자 페이지에 접속한 후 사용할 코어의 Analysis 메뉴를 통해 한글 형태소 분석을 테스트해볼 수 있습니다.




솔라는 인덱싱을 위해서는 데이터를 XML로 파싱하여야 합니다. 그러나, 일반적인 웹사이트들은 검색을 할 데이터들이 DB에 있으니 솔라가 직접 DB에 접속해 데이터를 가져와 인덱싱할 수 있으면 XML로 데이터를 입력하는 것보다 편하겠죠? 다음 포스팅에서는 DB에 접속해 데이터를 가져오는 방법에 대해 알아보겠습니다.


===


사진 포트폴리오 - City, City People (http://photo.just4fun.kr/)

사진 매거진 앱 - Viewzin (http://viewzin.just4fun.kr/)



이 블로그의 인기 게시물

구글 결제에서 결제 수단 등록 문제

얼마 전 카드를 새로 만들어서 구글 결제의 결제 수단을 교체하려고 하였는데 카드 번호가 잘못되었다라고 하면서 등록이 되지 않았습니다. 관련해서 검색을 해보니 이런 문제가 흔히 발생하고 있더군요. 저처럼 당황하실 분들을 위해 구글 고객센터와 통화해 해결하면서 알아낸 것들을 공유하겠습니다.

넥서스 4 : 레퍼런스 그 이상의 폰

LTE 버전을 기대했는데 3G 폰으로 나와 고민을 하게 한 넥서스4(넥포). 기존에 사용하던 넥서스S(넥스)가 이젠 성능의 한계를 확실하게 보여주고 있어 다음 넥서스폰은 LTE로 나올 것을 기대하면 1년 정도 사용할 생각으로 구입했습니다. 지난 주 월요일에 받아 일주일 정도 사용해본 느낌을 정리해보겠습니다. 넥포의 스펙을 정리해 보면 아래와 같습니다. 4.7인치 화면 1280 x 768 해상도 8백만 화소 후면 카메라, 1.3백만 화소 전면 카메라 3G 모바일 네트워크 (HSPA+ 지원) 무선 충전 SlimPort HDMI 내장 저장공간 8G/16G 2G 메모리 퀄컴 스냅드래곤 S4 프로 (쿼드코어) 폰의 스펙은 LG 옵티머스G를 베이스로 만들어진 폰이라 현재 기준으로 부족한 점이 없습니다. 충분히 빠르고 충분히 여유롭게 안드로이드 4.2를 구동할 수 있는 폰이죠. 스펙에서 흥미로운 것은 무선 충전과 SlimPort HDMI 입니다. 무선충전은 WCP Qi 규격이라 아직 발매가 되지 않은 전용 충전기 이외에도 호환되는 제품으로는 충전이 된다고 하는데 7만원 정도에 호환 제품을 구매할 수 있더군요. SlimPort HDMI는 넥포의 마이크로 USB 포트에 어댑터를 연결해 HDMI 출력을 지원하는 것입니다. 넥스를 사용하다 넥포를 사용하면서 느껴지는 것은 당연히 빠르다입니다. 안드로이드라는 플랫폼이 하드웨어 스펙은 'more and more' 불필요하다할 정도로 높은 것이 좋다라는 것을 다시 체감하는 순간이었습니다. 적어도 체감 성능면에서는 아이폰을 포함해 다른 폰에 밀릴 것이 없는 넥포입니다. 손에 잡히는 느낌은 처음에는 좋은 편이 아닙니다. 4.7인치라 화면이 큰 것도 있지만 뒷면까지 유리로 되어 있어 아이폰4를 처음 잡아보았을 때 느껴지는 손에 착 달라붙지 못하고 미끄러지는 듯한 느낌을 넥포에서도 느낄 수 있었습니다. 그나마 아이폰4와는 달리 테두리가 부드러운 재질이라 그립감에

레이저폰2 A/S 후기

내구성이 의심되었던 레이저폰2가 추석을 앞두고 문제가 생겨 A/S를 받았습니다. 이 폰을 지금 구입할 분들은 거의 없을 것 같지만 정보 공유 차원에서 간단한 A/S 후기를 올립니다.