Egloos | Log-in


IT 분석기 상세 분석 1.x 기준

텍스트 분석 작업의 핵심 클래스는 Analyzer
텍스트를 일련의 토큰, 즉 TokenStream으로 변환한다.
Analyzer를 상속받아 새로운 분석기를 만들 때 꼭 작성해야 하는 메소드는 다음과 같은 tokenStram()메소드 하나이다.
    public TokenStream tokenStream(String fieldName, Reader reader );
기본적으로 필드별로 다른 분석기를 사용할 수 있도록 만들어 져 있으나
그렇지 않은 일반적인 용도로 만들어진 분석기가 많기 때문에,
필드 이름에 관게없이 항상 같은 방법으로 분석한다.
필드 이름에 따라 별도의 분석기를 지정 할 수 있도록 만들어진 PerFieldAnalyzerWrapper 클래스가 루씬에 있다.

루씬에 들어있는 SimpleAnalyzer의 내부를 보고 어떻게 동작하는지 간단하게 살펴보자.

public final class SimpleAnalyzer extends Analyzer{
    public TokenStream tokenStream(String fieldName, Reader reader){
        return new LowerCaseTokenizer(reader);
    }
}

이제 루씬의 텍스트 분석 과정에서 핵심적인 역할을 하는 Token과 TokenStream에 대해 자세히 알아보자.

텍스트 분석과정에서 일련의 토큰을 얻어 낼 수 있다. 좀 더 크게보면, 텍스트를 색인시키면 분석, 즉 토큰화(tokenize)하도록 지정된 내용은 분석기를 거쳐 각 단어가 연속적인 토큰으로 변환되고, 토큰은 다시 텀으로 변환되어 색인에 저장된다. 토큰을 또 다시 텀으로 변환한다는 말 때문에 토큰과 텀을 혼동하기 쉽다. 의미를 명확하게 하기위해 토큰이 어떻게 만들어져 있는지 알아보고, 텀으로 어떻게 변환하는지는 나중에 살펴보자.

예를 들어 "the quick brown fox"란 문장을 분석해보자. 하나의 토큰은 텍스트에서 얻어낸 하나의 단어를 의미하며, 단어 그자체의 문자열과 시작 위치, 끝 위치, 토큰 종류, 위치증가값의 메타 정보를 갖는다.

위치증감값     1       1       1
                the quick brown fox
시작 위치는 원문에서 해당 코느의 문자열이 시작되는 위치를 숫자로 표시하고, 끝 위치는 해당 문자여링 끝나는 위치를 표시한다.
정리하면 모든 분석기는 아래의 4가지 정보를 바탕으로 동작한다.
1. 문자열
2. 시작 위치,
3. 끝 위치,
4. 토큰 종류

분석 작업이 끝나면 각각의 토큰은 텀의 형태로 색인에 전달된다. 텀은 토큰에서 변환하지만 토큰의 단어와 위치 증가값만 사용한다. 다시 말해 시작 위치, 끝 위치, 토큰 종류는ㅇ 분석작업에서 사용하기 위한 메타 정보일 뿐이며 색인에는 저장되지 않는다.
색인에는 토큰에서 변환한 텀의 정보를 모두 저장하는 것이 아니라 토큰의 단어와 위치 증가값만 사용한다.
시작 위치, 끝 위치, 토큰 종류는 분석 작업에서 사용하기 위한 메타 정보일 뿐이며 색인에는 저장되지 않는다.


by 행복하자 | 2009/03/20 15:59 | 루씬(검색엔진) | 트랙백 | 덧글(0)

트랙백 주소 : http://hongsgo.egloos.com/tb/2169755
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶