본 문서 solr 및 java 에 대한 기초지식이 있는것을 가정하고 작성합니다.

혹시 궁금한 사항은 사이트 하단에 있는 연락처나 메일로 연락을 주시면

답해드리겠습니다.



많은 프로젝트에서 검색엔진을 필요로 할 때

루씬기반의 solr 검색엔진을 별도로 구축하여 운영한다.

그러나 한국어 서비스를 위해선 arirang 이라는 한글형태분석기라는 별도의 plug-in 을

필요로 한다 .

이 때문에 구축시 많은 문제점이 발생한다.

해서 간단히 구축 순서와 점검사항을 기술해 볼까한다.

우선 apache-solr 4.6.1 버전을 다운 받는다 .

작성한 날자인 14-10-28 기준으로 4.10.1 이 가장 최신 버전이지만

arirang 이 4.6.1 버전까지가 정식 지원하므로 해당 버전을 사용한다.

solr 내부에도 경량 컨테이너가 존재하지만 원활한 사용을 위해

apach-tomcat 7.52 를 설치한다..

하나의 시스템을 돌린다는 가정하에 solr 압축파일 내의 example/solr

를 복사하여 설치하고자 하는 디렉토리에 붙여넣는다.

solr 디렉토리에 lib 디렉토리를 생성하고

압축파일 최상위에 있는 contrib ,  dist 를 복사하여 추가한다.

tomcat 의 localhost 에 solr 를 추가하고 docBase 를 생성한 solr/lib/solr-4.6.1.war 
로 지정한다.

Environment  value 를 solr 룻 디렉토리로 지정한다.

그리고 solr 압축 파일의

example/lib/ext 디렉토리 밑에 있는 jar 파일을 tomcat/lib 로 복사한 후 example/resources 디렉토리 안에 있는 log4j.properties 파일도 같은 디렉토리로 복사한다.

아참 리눅스라면 모든 디렉토리 권한을  tomcat 과 일치시키는것 잊지말자

이제 톰캣을 구동해본다. 

지정한 포트명으로 브라우저를 통해 확인하면 

다음과 같이 뜬다.

이제 arirang 을 설치할차례다

한글형태분석소 카페에서 

ariang 4.6+ 버전을 받아서

tomcat/webapps/solr/WEB-INF/lib
에 집어 넣는다.

그리고 

solr/collection1/conf

에 schema.xml 에 

<fieldType name="text_ko" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
      <tokenizer class="org.apache.lucene.analysis.ko.KoreanTokenizerFactory"/>
      <filter class="org.apache.lucene.analysis.ko.KoreanFilterFactory" hasOrigin="false" hasCNoun="true"  bigrammable="true"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
 <filter class="solr.EnglishPossessiveFilterFactory"/>
      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
      <filter class="solr.PorterStemFilterFactory"/>
    </analyzer>
    <analyzer type="query">
      <tokenizer class="org.apache.lucene.analysis.ko.KoreanTokenizerFactory"/>
      <filter class="org.apache.lucene.analysis.ko.KoreanFilterFactory" hasOrigin="false" hasCNoun="false"  bigrammable="false" queryMode="true"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
 <filter class="solr.EnglishPossessiveFilterFactory"/>
      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
      <filter class="solr.PorterStemFilterFactory"/>
    </analyzer>
   </fieldType>


를 추가하고 스키마를 지정한다 스키마를 지정할때는 스키마 타입도 함께 지정해야한다.

그리고 solrconfig.xml 수정하여
solr-dataimporthandler-.*\.jar 에 해당하는 lib 태그를 추가하고

상대경로로되어있는 것을 절대경로로 변경한다.

그리고 db 로부터의 import 를 위해 data-config.xml 를 생성해 추가하고

solrconfig.xml 에 등록한다.

참 tomcat /lib 에 db 에 해당하는 드라이버 lib 를 넣는것을 잊지말자.

또 log4j.properties 파일을 수정하여 로그를 기록한 디렉토리도 바꿔준다.

그리고 톰캣을 구동한다. 

구동이 정상적으로 완료되면 설치된 ip와 포트로

solr/dataimport?command=full-import

쿼리를 날려본다.

idea 와 생성된 색인수가 표시되면 성공한것이다.