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 | 구분 안 함 "카페"와 "카페"와 같은 단어는 동일하게 취급됩니다. |
1 | 중요 "카페"와 "카페"와 같은 단어는 다르게 취급됩니다. |
참고 항목
전체 텍스트 카탈로그에 대한 이 값의 현재 설정을 보려면 다음 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 = 0runs with expansion_type = 2running with expansion_type = 2ran with expansion_type = 2jog with expansion_type = 4 |
source_term | nvarchar(4000) | 지정된 용어가 생성되거나 구문 분석된 용어 또는 구문입니다. 예를 들어 쿼리는 '"word breakers" AND stemmers' 다음 source_term 값을 영어로 생성합니다.word breakers display_term word word breakers display_term breakers stemmers display_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);