티스토리 뷰

3. 형태소 분석기 추가

 

solr에서 기본으로 제공하는 분석기로는 한글 문서의 단어들을 분석하고 인덱싱 하는 데에 한계가 있다(복합명사 ). 때문에 국내에서 진행중인 오픈소스 한글 형태소 분석기인KoreanAnalyzer 사용할 것을 권장한다.

(jdk 1.5 이상 요구됨)

 

 3.1 다운로드

 

루씬 한글 분석기 오픈소스 카페(http://cafe.naver.com/korlucene.cafe)’  가입 최신 버전의 source 다운로드 받고 압축을 푼다. Factory 클래스 추가를 위해 source 파일은 반드시 다운로드 받아야 한다.(koreananalyzer-src-20090000.zip)

 

 

3.2 Factory 클래스 추가

 

Solr Server에서 KoreanAnalyzer 사용하기 위해서는  개의 Factory클래스가 필요하다. Factory 클래스를 추가하기 위해서는 아래의 절차를 따른다.

 

l  다운로드 받은 source 이클립스 등의 IDE 새로운 프로젝트로 import 한다.

l  org.apache.lucene.analysis.kr 패키지 밑에아래  개의 클래스를 추가한 .jar 파일로 export 한다.

 

package org.apache.lucene.analysis.kr;

 

import org.apache.lucene.analysis.TokenStream;

import org.apache.solr.analysis.BaseTokenFilterFactory;

 

public class KoreanFilterFactory extends BaseTokenFilterFactory {

 

    public TokenStream create(TokenStream input) {

       

        return new KoreanFilter(input);

    }

}

package org.apache.lucene.analysis.kr;

 

import java.io.Reader;

 

import org.apache.lucene.analysis.TokenStream;

import org.apache.solr.analysis.BaseTokenizerFactory;

 

public class KoreanTokenizerFactory extends BaseTokenizerFactory {

 

    public TokenStream create(Reader input) {

       

        return new KoreanTokenizer(input);

    }

}

 

 

 

3.3 설치

 

이클립스에서 적용하고자 하는 프로젝트의 ‘WEB-INF/lib/’ 디렉토리 아래에koreananalyzer.jar 라이브러리 파일을 복사한다.

 

 

3.4 설정

 

scheme.xml 파일에서 적용하고자 하는 field type에서 아래와 같이 filter tokenizer 설정부분을 수정한다.

 

<types>

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">

      <analyzer type="index">

        <!--<tokenizer class="solr.WhitespaceTokenizerFactory"/>-->

                           <tokenizer class="org.apache.lucene.analysis.kr.KoreanTokenizerFactory"/>       

                           <filter class="org.apache.lucene.analysis.kr.KoreanFilterFactory"/>

        <filter class="solr.StopFilterFactory"

                ignoreCase="true"

                words="stopwords.txt"

                enablePositionIncrements="true" />

        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>

        <filter class="solr.LowerCaseFilterFactory"/>

        <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>

        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

      </analyzer>

      <analyzer type="query">

                           <tokenizer class="org.apache.lucene.analysis.kr.KoreanTokenizerFactory"/>

                           <filter class="org.apache.lucene.analysis.kr.KoreanFilterFactory"/>

        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>

        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>

        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>

        <filter class="solr.LowerCaseFilterFactory"/>

        <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>

        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

      </analyzer>

    </fieldType>

</types>

 

 

3.5 단어 사전

 

KoreanAnalyzer 형태소 분석을 위해 단어 사전을 별도로 사용하고 있다기본적으로3만개 정도의 단어를 포함하고 있고 새로운 단어를 추가할 수도 있다.

 

3.5.1 구조  형식

l  total.dic

-        용언과 체언을 포함한 기본 사전,

-        사전의 형식

) 납부, 10011X

콤마를 중심으로 좌측은 단어우측은 단어정보임.

-        단어정보 사용규칙

단어정보는 여섯글자로 이루어지고 순서에 따른 내용은 다음과 같음.

1-명사 2-동사 3-기타품사 4-하여동사 5-되어동사 6-불규칙변형

-        불규칙 변형의 종류

B:ㅂ불규칙 H:ㅎ불규칙 L:ㄹ불규칙 S:ㅅ불규칙 D:ㄷ불규칙 R: 불규칙X:규칙

 

l  extension.dic - 사전을 보완해야  경우 추가 단어 등록을 위해 사용되는 확장 사전

l  josa.dic - 조사 모음.

l  eomi.dic - 어미 모음.

l  prefix.dic - 복합명사 분해  사용할 접두어 모음.

l  suffix.dic - 복합명사 분해  사용할 접미어 모음.

l  compounds.dic -

최장일치법에 의해 분해가 불가능한 복합명사를 등록하기 위한 사전

(- “근로자의날:근로자,”)

 

 

    3.5.1 사전 편집

             단어사전을 수정해야 하는 경우아래의 순서를 따른다.

 

l  KoreanAnalyzer source 다운로드 받는다.

l  다운로드 받은 source 이클립스 등의 IDE 새로운 프로젝트로 import 한다.

l  org.apache.lucene.analysis.kr.dic 아래에서 변경이 필요한 사전을 수정한다.

l  .jar 파일로 export  기존의 koreananalyzer.jar 교체하여 사용한다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함