sys.dm_fts_parser(Transact-SQL)

적용 대상:SQL Server

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

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

구문

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

인수

query_string

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

lcid

query_string 구문 분석하는 데 사용할 단어 분리기의 LCID(로캘 식별자)입니다.

stoplist_id

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

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

accent_sensitivity

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

악센트 감도는...
0 구분 안 함

"카페"와 "카페"와 같은 단어는 동일하게 취급됩니다.
6 중요

"카페"와 "카페"와 같은 단어는 다르게 취급됩니다.

참고 항목

전체 텍스트 카탈로그에 대한 이 값의 현재 설정을 보려면 다음 Transact-SQL 문을 SELECT fulltextcatalogproperty('<catalog_name>', 'AccentSensitivity');실행합니다.

반환된 테이블

열 이름 데이터 형식 설명
keyword varbinary(128) 단어 분리기에서 반환된 지정된 키워드의 16진수 표현입니다. 이러한 표현은 키워드를 전체 텍스트 인덱스에 저장하는 데 사용됩니다. 이 값은 사람이 읽을 수 없지만 지정된 키워드를 sys.dm_fts_index_keywords 및 sys.dm_fts_index_keywords_by_document 같은 전체 텍스트 인덱스의 콘텐츠를 반환하는 다른 동적 관리 뷰에서 반환된 출력과 관련시키는 데 유용합니다.

참고:0xFF 파일 또는 데이터 세트의 끝을 나타내는 특수 문자를 나타냅니다.
group_id int 지정된 용어가 생성된 논리 그룹을 차별화하는 데 유용한 정수 값을 포함합니다. 예를 들어 ''Server AND DB OR FORMSOF(THESAURUS, DB)"은 다음 group_id 값을 영어로 생성합니다.

1: 서버
2: DB
3: DB
phrase_id int 단어 분리기에서 전체 텍스트와 같은 복합 단어의 대체 형식이 발급되는 경우를 구분하는 데 유용한 정수 값을 포함합니다. 때로는 복합 단어('수백만 개')가 있는 경우 단어 분리기에서 대체 형식을 발급합니다. 이러한 대체 양식(구)은 때때로 구별되어야 합니다.

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

multi의 경우 1입니다.
million의 경우 1입니다.
2: multimillion
발생 빈도 int 구문 분석 결과에서 각 용어의 순서를 나타냅니다. 예를 들어 "SQL Server query processor" 항목의 경우 구의 용어에 대한 다음 발생 값이 영어로 포함됩니다.

SQL의 경우 1입니다.
2: Server
3: query
4 for processor
special_term nvarchar(4000) 단어 분리기에서 발급되는 용어의 특성에 대한 정보를 포함합니다. 다음 중 하나입니다.

- 정확한 일치
- 노이즈 단어
- 문장 끝
- 단락 끝
- 장 끝
display_term nvarchar(4000) 사람이 읽을 수 있는 키워드 형식을 포함합니다. 전체 텍스트 인덱스의 내용에 액세스하도록 설계된 함수와 마찬가지로 이 표시된 용어는 비정규화 제한으로 인해 원래 용어와 동일하지 않을 수 있습니다. 그러나 원래 입력에서 식별할 수 있을 만큼 정확해야 합니다.
expansion_type int 지정된 용어의 확장 특성에 대한 정보를 포함합니다. 다음 중 하나입니다.

0 = 단일 단어 대/소문자
2 = 변곡점 확장
4 = 동의어 사전 확장/교체

예를 들어 동의어 사전이 정의하는 경우는 다음과 같은 확장 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_term 값을 영어로 생성합니다.

word breakersdisplay_term word
word breakersdisplay_term breakers
stemmersdisplay_term stemmers

설명

sys.dm_fts_parser는 CONTAINS 및 FREETEXT와 같은 전체 텍스트 조건자와 CONTAINSTABLE 및 FREETEXTTABLE과 같은 함수의 구문과 기능을 지원합니다.

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

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

자세한 내용은 C를 참조하세요 . 이 문서의 뒷부분에 특수 문자 가 포함된 문자열의 출력을 표시합니다.

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 외에도 전체 텍스트 쿼리와 관련된 다른 많은 문제를 이해하고 해결하는 데 크게 도움이 될 수 있습니다.

사용 권한

CREATE FULLTEXT CATALOG 권한 및 지정된 중지 목록에 대한 액세스 권한이 필요합니다.

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

다음 예제에서는 LCID가 1033이고 다음 쿼리 문자열에 중지 목록이 없는 영어 단어 분리기를 사용하여 출력을 반환합니다.

The Microsoft business analysis

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

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

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

다음 예제에서는 다음 쿼리 문자열에서 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);

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

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

français

이 예제에서는 프랑스어 1036에 대한 LCID와 사용자 정의 중지 목록 5의 ID를 지정합니다. 악센트 구분이 활성화됩니다.

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

참고 항목

다음 단계