다음을 통해 공유


전체 텍스트 인덱스 만들기 시 언어 선택

적용 대상:SQL Server Azure SQL 데이터베이스

전체 텍스트 인덱스를 만들 때는 인덱싱된 열에 대한 열 수준 언어를 지정해야 합니다. 지정된 언어의 단어 분리기 및 형태소 분석기는 열의 전체 텍스트 쿼리에서 사용됩니다. 전체 텍스트 인덱스를 만들기 위해 열 언어를 선택할 때 고려할 몇 가지 사항이 있습니다. 이러한 고려 사항은 Full-Text 엔진에서 텍스트를 토큰화한 다음 인덱싱하는 방법과 관련이 있습니다.

참고 항목

전체 텍스트 인덱스의 열에 열 수준 언어를 지정하려면 열을 지정할 때 절을 사용합니다 LANGUAGE <language_term> . 자세한 내용은 CREATE FULLTEXT INDEXALTER FULLTEXT INDEX를 참조하세요.

이 섹션에서는 단어 분리기 및 형태소 분석기를 소개하고 Full-Text Search에서 열 수준 언어의 LCID(언어 코드 식별자)를 사용하는 방법을 설명합니다.

단어 분리기 및 형태소 분석기 소개

SQL Server에는 단어 분리기 및 형태소 분석기의 전체 제품군이 포함되어 있습니다. MICROSOFT NLG(자연어 그룹)는 이러한 언어 구성 요소를 구현하고 지원합니다.

단어 분리기는 다음과 같은 이점을 제공합니다.

  • 견고성

    테스트는 단어 분리기가 고압 쿼리 환경에서 강력하다는 것을 보여줍니다.

  • 보안

    단어 분리기는 SQL Server에서 기본적으로 사용하도록 설정됩니다. SQL Server의 전반적인 보안 및 견고성을 향상시키려면 단어 분리기 및 필터와 같은 외부 구성 요소의 서명을 확인하는 것이 좋습니다. 전체 텍스트를 구성하여 이러한 구성 요소가 다음과 같이 서명되었는지 확인할 수 있습니다.

    EXECUTE sp_fulltext_service 'verify_signature';
    
  • 품질

    내부 테스트는 단어 분리기가 이전 단어 분리기보다 더 나은 의미 체계 품질을 제공한다는 것을 보여줍니다. 이렇게 하면 회수 정확도가 높아질 수 있습니다.

  • 방대한 언어 목록에 대한 적용 범위, 단어 분리기는 SQL Server에 기본적으로 포함되며 기본적으로 사용하도록 설정됩니다.

SQL Server에 단어 분리기 및 형태소 분석기가 포함된 언어 목록은 sys.fulltext_languages 참조하세요.

Full-Text Search에서 열 수준 언어의 이름을 사용하는 방법

전체 텍스트 인덱스를 만들 때는 각 열에 대해 유효한 언어 이름을 지정해야 합니다. 언어 이름이 유효하지만 sys.fulltext_languages 카탈로그 뷰에서 반환되지 않는 경우 Full-Text Search는 동일한 언어 패밀리의 사용 가능한 가장 가까운 언어 이름(있는 경우)으로 돌아갑니다. 그렇지 않으면 Full-Text 검색이 중립 단어 분리기로 돌아갑니다. 이 대체 동작은 회수 정확도에 영향을 줄 수 있습니다. 따라서 전체 텍스트 인덱스 만들기 시 각 열에 대해 유효하고 사용 가능한 언어 이름을 지정하는 것이 좋습니다.

참고 항목

LCID는 char 또는 nchar등의 전체 텍스트 인덱싱에 적합한 모든 데이터 형식에 대해 사용됩니다. char, varchar 또는 text 형식 열의 정렬 순서가 LCID로 식별된 언어와 다른 언어 설정으로 설정된 경우 해당 열을 전체 텍스트 인덱싱 및 쿼리하는 동안 LCID가 사용됩니다.

단어 분리

단어 분리기는 언어별 단어 경계에 인덱싱되는 텍스트를 토큰화합니다. 따라서 단어 분리 동작은 언어마다 다릅니다. 한 언어를 x사용하여 여러 언어 {x, yz}를 인덱싱하는 경우 일부 동작으로 인해 예기치 않은 결과가 발생할 수 있습니다. 예를 들어 대시(-) 또는 쉼표(,)는 한 언어로 버려지지만 다른 언어에서는 throw되지 않는 단어 분리 요소일 수 있습니다. 또한 드문 경우지만 특정 단어가 다른 언어에서는 다른 형태소로 분류되어 예상치 못한 형태소 분석 동작이 발생할 수도 있습니다. 예를 들어 영어에서 단어 경계는 일반적으로 공백 또는 문장 부호의 일부 형태입니다. 독일어와 같은 다른 언어에서는 단어 또는 문자가 함께 결합될 수 있습니다. 따라서 선택한 열 수준 언어는 해당 열의 행에 저장할 것으로 예상되는 언어를 나타내야 합니다.

서양어

서양 언어 제품군의 경우 어떤 언어가 열에 저장될지 확실하지 않거나 둘 이상의 언어가 저장될 것으로 예상되는 경우 일반적인 해결 방법은 열에 저장될 수 있는 가장 복잡한 언어에 단어 분리기를 사용하는 것입니다.

예를 들어 영어, 스페인어 및 독일어 콘텐츠를 단일 열에 저장할 수 있습니다. 이 세 서양 언어는 독일어 패턴이 가장 복잡한 유사한 단어 분리 패턴을 가지고 있습니다. 따라서 영어와 스페인어 텍스트를 올바르게 처리할 수 있는 독일어 단어 분리기를 사용하는 것이 좋습니다. 반면, 영어 단어 분리기는 독일어의 복합 단어 때문에 독일어 텍스트를 완벽하게 처리하지 못할 수 있습니다.

언어 패밀리에서 가장 복잡한 언어의 단어 분리기를 사용하면 가족 내 모든 언어의 완벽한 인덱싱이 보장되지 않습니다. 가장 복잡한 단어 분리기가 다른 언어로 작성된 텍스트를 올바르게 처리할 수 없는 코너 사례가 있을 수 있습니다.

비서양어

비서양어(예: 중국어, 일본어, 힌디어 등)의 경우 이전 해결 방법이 언어적 이유로 반드시 작동하지는 않습니다. 비서구권 언어의 경우 다음 해결 방법 중 하나를 고려하세요.

  • 언어군이 다른 언어의 경우

    스페인어 및 일본어와 같이 열에 포함된 언어가 완전히 다른 경우 각 언어 내용을 서로 다른 열에 저장하는 방법을 고려해 보십시오. 이렇게 분리하면 각 열에 대해 언어별 단어 분리기를 사용할 수 있습니다. 이 솔루션을 선택하고 쿼리 시간에 쿼리 언어를 모르는 경우 쿼리가 올바른 행 또는 문서를 찾을 수 있도록 두 열에 대해 쿼리를 실행해야 할 수 있습니다.

  • 이진 내용의 경우(예: Microsoft Word 문서)

    인덱싱된 콘텐츠가 이진 형식인 경우 단어 분리기에 보내기 전에 텍스트 콘텐츠를 처리하는 Full-Text Search 필터는 이진 파일 내에 존재하는 특정 언어 태그를 적용할 수 있습니다. 이 경우 인덱싱 시 필터는 문서의 문서 또는 섹션에 적합한 LCID를 내보낸다. 그런 다음 Full-Text 엔진은 해당 LCID를 사용하여 언어에 대한 단어 분리기를 호출합니다. 하지만 여러 언어 내용을 인덱싱한 후에는 내용이 올바르게 인덱싱되었는지를 확인하는 것이 좋습니다.

  • 일반 텍스트 콘텐츠

    콘텐츠가 일반 텍스트인 경우 xml 데이터 형식으로 변환하고 각 특정 문서 또는 문서 섹션에 해당하는 언어를 나타내는 언어 태그를 추가할 수 있습니다. 그러나 이렇게 하려면 전체 텍스트 인덱싱 전에 언어를 알아야 합니다.

형태소 분석

열 수준 언어를 선택할 때 고려해야 할 또 다른 고려 사항은 형태소 분석입니다. 전체 텍스트 쿼리에서 형태소 분석하는 것은 특정 언어로 된 단어의 모든 형태소 분석(변곡) 형식을 검색하는 프로세스입니다. 일반 단어 분리기를 사용하여 여러 언어를 처리하는 경우 형태소 분석 프로세스는 열의 다른 언어가 아닌 열에 지정된 언어에 대해서만 작동합니다. 예를 들어 독일어 형태소 분석기는 영어 또는 스페인어(등)에서 작동하지 않습니다. 이는 쿼리 시간에 선택한 언어에 따라 회수에 영향을 줄 수 있습니다.

언어 선택에 대한 또 다른 고려 사항은 데이터가 표현되는 방식과 관련이 있습니다. varbinary(max) 열에 저장되지 않은 데이터의 경우 특별한 필터링이 수행되지 않습니다. 일반적으로 텍스트는 있는 그대로 단어 분리기 구성 요소를 통과합니다.

또한 단어 분리기는 주로 작성된 텍스트를 처리하도록 설계되었습니다. 따라서 텍스트에 태그 유형(예: HTML)이 있는 경우 인덱싱 및 검색 중에 언어 정확도가 크게 떨어지지 않을 수 있습니다. 이 경우 두 가지 선택 사항이 있습니다. 기본 방법은 단순히 varbinary(max) 열에 텍스트 데이터를 저장하고 필터링될 수 있도록 문서 형식을 나타내는 것입니다. 이 옵션이 아닌 경우 중립 단어 분리기를 사용하고 가능한 경우 노이즈 단어 목록에 태그 데이터(예: HTML의 'br')를 추가하는 것이 좋습니다.

참고 항목

중립 언어를 지정할 때 언어 기반 형태소 분석이 실행되지 않습니다.

전체 텍스트 쿼리에서 기본이 아닌 열 수준 언어 지정

기본적으로 SQL Server에서 Full-Text Search는 전체 텍스트 절에 포함된 각 열에 지정된 언어를 사용하여 쿼리 용어를 구문 분석합니다. 이 동작을 재정의하려면 쿼리 시 기본이 아닌 언어를 지정합니다. 리소스가 설치된 지원되는 언어의 경우 CONTAINS, LANGUAGE <language_term>CONTAINSTABLE, FREETEXT 또는 FREETEXTTABLE 쿼리의 절을 사용하여 쿼리 용어의 단어 분리, 형태소 분석, 동의어 사전 및 중지 단어 처리에 사용되는 언어를 지정할 수 있습니다.