sys.dm_fts_parser(Transact-SQL)

지정된 단어 분리기, 동의어 사전중지 목록 조합을 쿼리 문자열 입력에 적용한 후 최종 토큰화 결과를 반환합니다. 토큰화 결과는 지정된 쿼리 문자열에 대한 전체 텍스트 엔진의 출력과 같습니다.

sys.dm_fts_parser 는 동적 관리 함수입니다.

구문

sys.dm_fts_parser('query_string', lcid, stoplist_id, accent_sensitivity)

인수

  • query_string
    구문 분석할 쿼리입니다. query_string은 CONTAINS 구문이 지원하는 문자열 체인일 수 있습니다. 예를 들어 활용 형태, 동의어 사전 및 논리 연산자를 포함할 수 있습니다.

  • lcid
    query_string을 구문 분석하는 데 사용할 단어 분리기의 LCID(로캘 ID)입니다.

  • stoplist_id
    lcid로 식별되는 단어 분리기에서 사용할 중지 목록의 ID입니다(있는 경우). stoplist_id는 int입니다. 'NULL'을 지정하면 중지 목록이 사용되지 않으며, 0을 지정하면 시스템 STOPLIST가 사용됩니다.

    중지 목록 ID는 데이터베이스 내에서 고유합니다. 지정된 테이블에 대한 전체 텍스트 인덱스의 중지 목록 ID를 구하려면 sys.fulltext_indexes 카탈로그 뷰를 사용합니다.

  • accent_sensitivity
    전체 텍스트 검색에서 분음 부호를 구분할지 여부를 제어하는 부울 값입니다. accent_sensitivity는 bit이며 다음 값 중 하나일 수 있습니다.

    악센트 구분 여부

    0

    구분 안 함

    "café"와 "cafe" 같은 단어가 동일하게 처리됩니다.

    1

    구분

    "café"와 "cafe" 같은 단어가 다르게 처리됩니다.

    [!참고]

    이 값이 현재 전체 텍스트 카탈로그에 대해 어떻게 설정되어 있는지 보려면 다음 Transact-SQL 문을 실행합니다. SELECT fulltextcatalogproperty('catalog_name', 'AccentSensitivity');.

반환된 테이블

열 이름

데이터 형식

설명

keyword

varbinary(128)

단어 분리기에서 반환된 특정 키워드의 16진수 표현입니다. 이러한 표현은 키워드를 전체 텍스트 인덱스에 저장하는 데 사용됩니다. 이 값은 사람이 읽을 수 없는 값이지만 sys.dm_fts_index_keywordssys.dm_fts_index_keywords_by_document와 같이 전체 텍스트 인덱스의 내용을 반환하는 다른 동적 관리 뷰에서 반환된 출력에 특정 키워드를 연결하는 데 유용합니다.

참고참고
OxFF는 파일 또는 데이터 집합의 끝을 나타내는 특수 문자입니다.

group_id

int

지정된 용어가 생성된 논리 그룹을 차별화하는 데 유용한 정수 값을 포함합니다. 예를 들어 'Server AND DB OR FORMSOF(THESAURUS, DB)"'는 다음 group_id 값을 영어로 생성합니다.

group_id display_term
1서버
2DB
3DB

phrase_id

int

단어 분리기에서 full-text와 같은 복합 단어의 대체 형태가 실행되는 경우를 차별화하는 데 유용한 정수 값을 포함합니다. 경우에 따라 복합 단어('multi-million')가 있으면 단어 분리기에서 대체 형태가 실행되기도 하는데, 이러한 대체 형태(구)는 차별화해야 하는 경우가 있습니다.

예를 들어 'multi-million'는 다음 phrase_id 값을 영어로 생성합니다.

phrase_id display_term
1 multi
1 million
2 multimillion

occurrence

int

구문 분석 결과에 있는 각 용어의 순서를 나타냅니다. 예를 들어 "SQL Server query processor" 구의 경우 occurrence에 이 구의 용어에 대해 다음 occurrence 값이 영어로 포함될 수 있습니다.

occurrence display_term
1 SQL
2 Server
3 query
4 processor

special_term

nvarchar(4000)

단어 분리기에서 실행되는 용어의 특징에 대한 정보를 포함합니다. 예를 들면 다음과 같습니다.

정확히 일치

의미 없는 단어

문장의 끝

단락의 끝

장의 끝

display_term

nvarchar(4000)

사람이 인식할 수 있는 키워드 형식을 포함합니다. 전체 텍스트 인덱스의 내용에 액세스하도록 디자인된 함수를 사용하기 때문에 표시된 용어가 비정규화 제한으로 인해 원래 용어와 동일하지 않을 수 있지만, 원래 입력에서 식별할 수 있을 만큼은 정확해야 합니다.

expansion_type

int

지정된 용어의 확장 특성에 대한 정보를 포함합니다. 예를 들면 다음과 같습니다.

0 = 단일 단어

2 = 활용 형태상의 확장

4 = 동의어 사전 확장/대체

예를 들어 동의어 사전이 다음과 같이 run을 jog의 확장으로 정의하는 경우를 고려해 보십시오.

<expansion>

<sub>run</sub>

<sub>jog</sub>

</expansion>

FORMSOF (FREETEXT, run) 용어는 다음 출력을 생성합니다.

run with expansion_type=0

runs with expansion_type=2

running with expansion_type=2

ran with expansion_type=2

jog with expansion_type=4

source_term

nvarchar(4000)

지정된 용어가 생성되거나 구문 분석되는 용어 또는 구입니다. 예를 들어 '"word breakers" AND stemmers'에 대한 쿼리는 다음 source_termsource_term 값을 영어로 생성합니다.

source_term display_term
단어 분리기word
단어 분리기breakers
형태소 분석기형태소 분석기

주의

sys.dm_fts_parserCONTAINSFREETEXT 같은 전체 텍스트 조건자의 구문 및 기능과 CONTAINSTABLEFREETEXTTABLE 같은 함수를 지원합니다.

유니코드를 사용하여 특수 문자 구문 분석

쿼리 문자열의 구문을 분석할 때 쿼리 문자열을 유니코드로 지정하지 않을 경우 sys.dm_fts_parser는 연결된 데이터베이스의 데이터 정렬을 사용합니다. 따라서 ü 또는 ç 같은 특수 문자가 포함된 비유니코드 문자열의 경우 데이터베이스의 데이터 정렬에 따라 예기치 않은 출력이 생성될 수 있습니다. 쿼리 문자열을 데이터베이스 데이터 정렬과 별도로 처리하려면 N'query_string'과 같이 N 접두사를 사용합니다.

자세한 내용은 이 항목의 뒷부분에 나오는 "3. 특수 문자가 포함된 문자열의 출력 표시"를 참조하십시오.

sys.dm_fts_parser를 사용하는 경우

sys.dm_fts_parser는 디버깅 작업에 매우 유용할 수 있습니다. 몇 가지 주요 사용 시나리오는 다음과 같습니다.

  • 지정된 단어 분리기가 주어진 입력을 처리하는 방법을 이해하려면

    쿼리가 예기치 않은 결과를 반환하는 것은 단어 분리기가 데이터를 구문 분석하고 분리하는 방법 때문일 수 있습니다. sys.dm_fts_parser를 사용하면 단어 분리기가 전체 텍스트 인덱스에 전달하는 결과를 확인할 수 있습니다. 또한 전체 텍스트 인덱스에서 검색되지 않는 용어와 중지 단어를 확인할 수 있습니다. 용어가 지정된 언어의 중지 단어인지 여부는 함수에 선언된 stoplist_id 값으로 지정된 중지 목록에 해당 용어가 있는지 여부에 의해 결정됩니다.

    또한 악센트 구분 플래그를 사용하면 단어 분리기가 해당 악센트 구분 정보를 포함하는 입력을 구문 분석하는 방법을 알 수 있습니다.

  • 형태소 분석기가 지정된 입력에 미치는 영향을 이해하려면

    다음 FORMSOF 절이 포함된 CONTAINS 또는 CONTAINSTABLE 쿼리를 지정하면 단어 분리기와 형태소 분석기가 쿼리 용어와 해당 형태소 분석 형태를 구문 분석하는 방법을 확인할 수 있습니다.

    FORMSOF( INFLECTIONAL, query_term )
    

    이 결과는 전체 텍스트 인덱스에 전달되는 용어를 보여 줍니다.

  • 동의어 사전이 입력의 전부 또는 일부를 확장하거나 대체하는 방법을 이해하려면

    다음을 지정할 수도 있습니다.

    FORMSOF( THESAURUS, query_term )
    

    이 쿼리의 결과는 단어 분리기와 동의어 사전이 쿼리 용어를 위해 상호 작용하는 방법을 보여 줍니다. 동의어 사전의 확장 또는 대체를 확인하고 전체 텍스트 인덱스에 대해 실제로 실행되는 결과 쿼리를 식별할 수 있습니다.

    다음을 실행할 수 있습니다.

    FORMSOF( FREETEXT, query_term )
    

    그러면 활용 및 동의어 사전 기능이 자동으로 수행됩니다.

위의 사용 시나리오 외에도 sys.dm_fts_parser를 사용하면 전체 텍스트 쿼리와 관련된 다른 많은 문제를 이해하고 해결하는 데 많은 도움이 됩니다.

사용 권한

sysadmin 고정 서버 역할의 멤버 자격과 지정된 중지 목록에 대한 액세스 권한이 필요합니다.

1. 키워드 또는 구에 대해 지정된 단어 분리기의 출력 표시

다음 예에서는 아래의 쿼리 문자열에 대해 LCID가 1033인 영어 단어 분리기를 사용하여 출력을 반환합니다. 여기서 중지 목록은 사용되지 않습니다.

The Microsoft business analysis

악센트 구분은 사용하지 않습니다.

SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" ', 1033, 0, 0)

2. 중지 목록 필터링 컨텍스트에서 지정된 단어 분리기의 출력 표시

다음 예에서는 아래의 쿼리 문자열에 대해 LCID가 1033인 영어 단어 분리기와 ID가 77인 영어 중지 목록을 사용하여 출력을 반환합니다.

"The Microsoft business analysis" OR "MS revenue"

악센트 구분은 사용하지 않습니다.

SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis"  OR " MS revenue" ', 1033, 77, 0)

3. 특수 문자가 포함된 문자열의 출력 표시

다음 예에서는 유니코드를 사용하여 아래의 프랑스어 문자열을 구문 분석합니다.

français

이 예에서는 프랑스어의 LCID인 1036과 사용자 정의 중지 목록의 ID인 5를 지정하고 악센트 구분을 사용합니다.

SELECT * FROM sys.dm_fts_parser(N'français', 1036, 5, 1);