이전 글(Ubuntu에 Solr 최신버전 설치)에서 설치까지만 다루고, 실제 사용하기 위한 설정들을 두번째 글에 다룰 예정이었는데, 생각보다 포스팅이 늦어졌다. 하지만, 아직도 한글 분석기 Arirang Analyzer 1.1.2 이후로 개선 소식이 없어, Solr 4.7.0 까지 나온 현재에도 4.5.X 까지만 사용할 수 있는 문제는 여전하기 때문에 아직 유용할 것이라 생각해서 정리해본다.

이전 글에서는 Solr 4.5.0만 언급했지만, 4.5.1에서도 Arirang Analyzer는 잘 동작하므로 한글 분석기를 사용하기 위해서는 Solr 4.5.1을 설치하면 된다. 과거 버전이라 Solr 공식 웹사이트에서는 배포하지 않지만, 아파치 아카이브 사이트에서 다운로드 받을 수 있으며 설치 과정은 이전 글에서 소개한 것과 동일하다. (아카이브 사이트라서 그런지 조금 느리다)

1. 코어 설정

이전 글대로 설치했다면, /usr/local/share/solr 디렉토리는 아래와 같이 구성되어 있을 것이다.

$ cd /usr/local/share/solr
$ ls -F
bin/  collection1/  README.txt  solr.xml  zoo.cfg

저기에서 collection1 이라고 되어있는 것이 코어이다. 여러개의 코어를 설정할 수 있는데, collection1을 복사하거나 이름을 바꿔서 사용할 코어를 만들자. 여기서는 'collection2'라고 이름을 바꿔서 진행해본다.

$ sudo mv collection1 collection2

설치할때 소유자 변환을 해두었기때문에 root로 작업 중이 아니라면, 항상 sudo를 붙여서 작업해야하는 것에 유의한다.

이제 collection2 디렉토리를 보면 여러개의 파일이 있는데, 당장 사용하기 위해서 수정해야할 파일은 딱 다음 세 개이다.

  • core.properties
  • conf/solrconfig.xml
  • conf/schema.xml

먼저 core.properties 파일을 보면 딱 한 줄이 있는데, 내용을 보면 뭘 고쳐야할 지 바로 감이 올 것이다. 다음과 같이 새로 만든 코어 이름을 적어준다.

name=collection2

다음으로 conf/schema.xml 파일은 인덱스에 저장할 스키마 설정이 있다. 주석을 보면 어떻게 작성해야하는지 감이 올텐데, 중요한 것은 field와 fieldType 이다. <fields> 안에 있는 <field> 태그들이 인덱스에 저장할 스키마들인데, 주석을 보면서 필요한 것들을 설정하면 된다. <types> 안에 있는 <fieldType>은 어떤 field가 있을 수 있는지 형식을 지정할 수 있는데, 한글 검색을 위해서 추가한 Arirang Analyzer를 사용하기 위해서 새로운 형식을 만들 필요가 있다.

<types> 안의 적당한 곳에 아래 내용을 넣으면, text_ko 라는 형식 사용할 수 있다.

    <!-- Korean (Arirang Analyzer 1.1.2) -->
    <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>

conf/solrconfig.xml 파일에는 코어 설정들이 있는데, 바로 사용해보기 위해서는 라이브러리 경로 설정들을 바꿔줘야한다. 나머지 설정들은 천천히 주석을 살펴보고 고치도록 한다. 당장 수정해야할 경로 설정들은 아래와 같다.

  <lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" />

  <lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" />

  <lib dir="../../../contrib/langid/lib/" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" />

  <lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />

위의 설정에서 경로들을 아래와 같이 고친다.

  <lib dir="../contrib/extraction/lib" regex=".*\.jar" />
  <lib dir="../dist/" regex="solr-cell-\d.*\.jar" />

  <lib dir="../contrib/clustering/lib/" regex=".*\.jar" />
  <lib dir="../dist/" regex="solr-clustering-\d.*\.jar" />

  <lib dir="../contrib/langid/lib/" regex=".*\.jar" />
  <lib dir="../dist/" regex="solr-langid-\d.*\.jar" />

  <lib dir="../contrib/velocity/lib" regex=".*\.jar" />
  <lib dir="../dist/" regex="solr-velocity-\d.*\.jar" />

여기서는 다른 설정이 필요없지만, conf/schema.xml 파일에서 스키마가 수정되면, conf/solrconfing.xml 파일을 수정해야할 수도 있다.

2. 라이브러리 복사

conf/solrconfig.xml 에서 변경한 라이브러리 경로대로 라이브러리를 복사하자. 이전 글에서 했듯이 solr를 다운로드 받아서 압축을 푼 디렉토리에서 복사한다.

$ cd solr-4.X.X (solr 압축 푼 디렉토리)
$ sudo cp -a contrib /usr/local/share/solr/
$ sudo cp -a dist /usr/local/share/solr/

3. 인덱싱

설정이 끝났으니 이제 인덱싱을 해볼 순서이다. 그 전에 먼저 설정들이 바뀌었으니 jetty 재시작부터 하자.

$ sudo service jetty restart

여기에서는 간단히 동작하는 것만 확인하기위해서 Solr 튜토리얼에 있는 방식으로 example 코드와 데이터를 사용해본다. 아까 사용한 solr 압축 푼 디렉토리 밑에 example/exampledocs 라는 디렉토리가 있을텐데 거기로 이동하면, 간단히 인덱싱을 해볼 수 있다.

$ cd solr-4.X.X (solr 압축 푼 디렉토리)
$ cd example/exampledocs
$ java -Durl=http://localhost:8080/solr/collection2/update  -jar post.jar solr.xml

4. 확인

인덱싱이 잘 되었는지는 다음 URL로 접근해서 확인할 수 있다.

http://localhost:8080/solr/collection2/select?q=solr

또는, 다음 URL로 확인해볼 수 있다.

http://localhost:8080/solr/collection2/browse

여기까지 했으면 기본적인 설치/설정은 해본 것이지만, 사실 한글 분석기는 사용하지 않았고, 실제로 사용해보려면 사용할 데이터에 알맞는 스키마를 설정해야한다. 이것은 (기약은 없지만) 다음 글에서 다뤄보겠다.

+ Recent posts