다음을 통해 공유


언어 리소스 구성 요소 이해

언어 리소스는 인덱스 작성 및 쿼리 기능을 새 언어 및 로캘로 확장하는 단어 분리기 및 형태소 분석기로 구성됩니다. Word 차단기는 인덱스 만들기 및 쿼리 중에 사용됩니다. 형태소 분석기는 쿼리에만 사용됩니다. Windows Search는 언어 리소스 DLL을 사용하여 특정 언어 로캘에 대한 IWordBreakerIStemmer 구현에 바인딩합니다.

이 항목은 다음과 같이 구성됩니다.

언어 리소스 정보

Windows Search는 필터( IFilter 인터페이스 구현) 및 ILoadFilter 를 사용하여 네이티브 형식의 문서에 액세스합니다. IFilter 구성 요소는 문서에서 텍스트 콘텐츠, 속성 및 서식을 추출합니다. IFilter는 필터링 중인 문서의 로캘을 식별합니다. 인덱싱 구성 요소는 해당 로캘에 적절한 단어 분리기를 호출합니다. 사용할 수 없는 경우 인덱싱 구성 요소는 중립 단어 분리기를 호출합니다. 단어 분리기는 IFilter에서 단어 분리기가 구문 분석하여 개별 단어와 구를 생성하는 유니코드 문자의 입력 스트림을 받습니다. 단어 분리기는 날짜 및 시간 형식도 정규화합니다. 인덱서는 단어를 모든 대문자로 변환하여 단어 분리기에서 생성된 단어를 정규화합니다. 인덱서는 해당 로캘에 대해 식별된 노이즈 단어를 제외하고 대문자를 전체 텍스트 인덱스에 저장합니다.

다음 표에서는 "그림 1은 인덱스 생성 프로세스 중에 Windows Search에 대한 언어 리소스의 역할을 보여 줍니다."라는 문장에 대한 작업 및 해당 결과를 나열합니다.

작업 결과 텍스트
원래 텍스트 그림 1에서는 인덱스를 만드는 동안 Windows Search에 대한 언어 리소스의 역할을 보여 줍니다.
필터링 그림 1에서는 인덱스를 만드는 동안 Windows Search에 대한 언어 리소스의 역할을 보여 줍니다.
단어 분리 그림, 1, 설명, 의, 의, 언어, 리소스, 용, Windows, 검색, 동안, 인덱스, 생성, 프로세스, EOS
표준화 그림, 1, 설명, 의, 언어, 리소스, WINDOWS, 검색, 동안, 인덱스, 생성, 프로세스
노이즈 단어 제거 그림, 설명, 역할, 언어, 리소스, WINDOWS, 검색 중, 인덱스, 생성, 프로세스
전체 텍스트 인덱스로 저장 그림, 설명, 역할, 언어, 리소스, WINDOWS, 검색 중, 인덱스, 생성, 프로세스

 

Word 차단기 및 형태소 분석기는 쿼리 시 FREETEXT 쿼리를 확장하는 데 사용됩니다. LCID(언어 코드 식별자)가 쿼리 매개 변수로 전달되지 않는 한 쿼리의 로캘은 기본 로캘입니다. 쿼리 구성 요소는 쿼리의 WHERE 절에 나열된 쿼리 용어에서 적절한 단어 분리기를 호출합니다. 예를 들어 쿼리의 WHERE 절에 "FREETEXT(사과, 오렌지 및 배)"가 포함된 경우 단어 분리기는 "사과, 오렌지 및 배"라는 텍스트를 받습니다. 쿼리 WHERE 절에서 CONTAINS 전체 텍스트 조건자를 사용하는 경우 단어 분리기에서 텍스트 출력이 정규화됩니다. 그렇지 않으면 쿼리 구성 요소는 단어 분리기로 식별된 각 단어를 해당 언어 및 로캘에 대한 적절한 형태소 분석기로 전달합니다. 형태소 분석기는 해당 단어에 대한 대체 또는 굴절된 양식 목록을 생성합니다. 쿼리 구성 요소는 확장된 쿼리 용어 목록을 정규화하고 노이즈 단어를 제거합니다.

다음 표에서는 쿼리 "사과, 오렌지 및 배"에 대한 작업 및 해당 결과를 나열합니다.

작업 결과 텍스트
원래 텍스트 사과, 오렌지 및 배
단어 분리 사과, 오렌지, 배, EOS
형태소 분석 사과, 사과, 오렌지, 오렌지, 오렌지, 배, 배
표준화 APPLE, APPLES, ORANGE, ORANGEY, ORANGES, AND, PEAR, PEARS
노이즈 단어 제거 APPLE, APPLES, ORANGE, ORANGEY, ORANGES, PEAR, PEARS
확장된 쿼리 용어 목록 APPLE, APPLES, ORANGE, ORANGEY, ORANGES, PEAR, PEARS

 

확장된 쿼리 용어는 쿼리가 원래 쿼리의 의도와 일치하는 문서를 찾을 가능성을 높입니다. 쿼리 시 단어 분리기 또는 형태소 분석기가 생성하는 텍스트는 디스크에 저장되지 않습니다.

단어 분리

Word 구분은 텍스트를 개별 텍스트 토큰 또는 단어로 분리하는 것입니다. 많은 언어, 특히 로마 알파벳을 사용하는 언어에는 단어, 구 및 문장을 분별하는 데 사용되는 단어 구분 기호(예: 공백) 및 문장 부호 배열이 있습니다. Word 차단기는 신뢰할 수 있고 정확한 결과를 제공하기 위해 정확한 언어 추론에 의존해야 합니다. Word 구분은 개별 문자의 의미가 컨텍스트에서 결정되는 쓰기 또는 스크립트 기반 알파벳의 문자 기반 시스템에서 더 복잡합니다. 단어 분리기 구현에 영향을 줄 수 있는 언어 고려 사항에 대한 자세한 내용은 언어 및 유니코드 고려 사항을 참조하세요.

형태소 분석

Windows Search는 쿼리 시간에만 형태소 분석기를 적용하여 FREETEXT 및 속성 쿼리의 용어에 대한 추가 단어 양식을 생성합니다. 형태소 분석기는 형태 분석을 수행하고 문법 규칙을 적용하여 단어에 대한 대체 또는 굴절된 양식 목록을 생성합니다. 대체 양식은 종종 같은 줄기 또는 기본 형태를 가지고있다. 인덱싱 서비스는 단어에 대해 굴곡이 있는 양식을 생성하여 쿼리와 통계적으로 더 관련성이 있는 쿼리 결과를 반환합니다. 예를 들어 "수영 모임"에 대한 전체 텍스트 쿼리는 "수영, 수영, 수영, 수영', 수영" 또는 "모임, 모임, 모임, 모임", 모임, 충족" 및 이러한 용어의 조합을 포함하는 문서와 일치합니다.

일부 언어에서는 표준 및 변형 변곡점 모두에 대해 인덱스 시간 및 쿼리 시간 모두에서 굴절된 용어를 생성해야 합니다. 이 경우 형태소 분석기는 실제 형태소 분석기에서 최소한의 형태소 분석 작업으로 단어 분리기 구성 요소에서 발생합니다. 예를 들어 일본어 단어 분리기는 인덱스를 만들고 쿼리하는 동안 형태소 분석을 수행하여 쿼리가 서로 다른 구형 형식의 검색어를 찾을 수 있도록 합니다.

표준화

모든 언어의 문서는 단일 인덱스에 저장됩니다. 단어와 언어 규칙은 크게 다르지만 모든 단어 분리기에서 일관되게 처리되는 숫자, 날짜 및 시간과 같은 몇 가지 고려 사항이 있습니다. 단어 분리기 구현에 영향을 줄 수 있는 정규화 고려 사항에 대한 자세한 내용은 Surface Form 정규화를 참조하세요.

노이즈 단어

중지 단어라고도 하는 노이즈 단어는 콘텐츠에 대한 중요한 지표가 아닌 단어입니다. 인덱싱 서비스는 쿼리 용어 및 전체 텍스트 인덱스에 포함된 콘텐츠에서 노이즈 단어를 제거합니다. 오프셋은 문서 또는 쿼리 용어 목록에서 단어의 발생입니다. 문서 또는 쿼리에서 노이즈 단어의 오프셋은 공백으로 기록됩니다. 노이즈 단어를 제거하면 불필요한 인덱스 증가를 방지하여 쿼리 성능이 향상됩니다. 또한 쿼리 결과의 관련성을 향상시킵니다. 특정 언어에 대해 노이즈 단어 목록을 사용하도록 Windows Search를 구성할 수 있습니다. 이러한 목록은 해당 언어에 대해 단어 분리기를 호출할 때 사용됩니다. 예를 들어 영어의 "the"는 고유 키로 값이 거의 없도록 자주 발생합니다. "The"는 노이즈 단어 목록에 있고 콘텐츠 인덱스로 작성되지 않으며 쿼리된 경우 결과를 반환하지 않습니다.

노이즈 단어는 구 쿼리에서 자리 표시자 역할을 합니다. "개 흔들기" 텍스트가 포함된 문서는 발생 1에서 "wag"와 발생 3의 "개"를 사용하여 인덱스에 저장됩니다. 구 쿼리 "wag dog"는 일치하지 않지만 발생 정보가 일치하기 때문에 "wag a dog"라는 구 쿼리가 일치합니다. 발생 2의 인덱스에서 "자주색"을 찾을 수 없으므로 "wag purple dog"라는 문구가 일치하지 않습니다. 그러나 "wag the dog"에 대한 쿼리는 문서에 "wag"와 "dog" 사이에 잡음이 없는 단어가 있는지 여부를 효율적으로 확인할 방법이 없기 때문에 "wag purple dog"가 포함된 문서를 반환합니다.

언어 리소스 확장

Word 차단기 및 형태소 분석기 구현

언어 및 유니코드 고려 사항

언어 리소스 및 모범 사례 문제 해결