Sys.dm_fts_parser을 이용한 문자열 구문 분석

 

  • Version : SQL Server 2008, 2008R2, 2012

 

우리가 배열로 이루어진 문자열을 분할하여 단어의 목록을 보고 싶을 때가 있다. 과거에는 Like 함수나 parse 함수를 이용하여 특정 문자 단위로 잘라서 대칭표와 비교하기도 하였다.

SQL Server 2008 부터는 DMF(동적 관리 함수)의 sys.dm_fts_parser을 사용하여 구문 분석을 할 수 있다.

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

 

함수를 사용하려면 sysadmin 고정 서버 역할 멤버 자격과 지정된 중지 목록에 대한 액세스 권한이 필요 하다.

 

구문 : sys.dm_fts_parser('query_string', lcid, stoplist_id, accent_sensitivity)

Query_string

구문 분석할 쿼리

Lcid

구문을 분석하는데 사용할 단어 분리기의 지역 ID

Stoplist_id

Lcid로 식별되는 단어 분리기에서 사용할 중지 목록의 ID

(NULL : 중지 목록 사용하지 않음. 0 : STOPLIST 사용)

Accent_sensitivity

전체 텍스트 검색에서 분음 부호를 구분할지 여부를 제어.(0 : 구분안함, 1 : 구분)

 

 

[유의어]

동의어 사전이 입력의 전부 또는 일부를 확장하거나 대체.

SELECT * FROM SYS.DM_FTS_PARSER('FORMSOF( THESAURUS, "MANAGEMENT STUDIO")', 2057, 0, 0)

 

 

 

[형태소 분석]

형태소 분석기와 단어 분리기가 쿼리 용어와 해당 형태소 분석 형태를 구문 분석하는 방법.

SELECT * FROM SYS.DM_FTS_PARSER('FORMSOF( INFLECTIONAL, "MANAGEMENT STUDIO")', 2057, 0, 0)

 

 

 

[문자열에서 단어 분리]

SELECT * FROM SYS.DM_FTS_PARSER('SQL or MySQL or Oracle or DB or Microsoft or DBServer', 1033, 0, 0)

 

 

 

위 예제 외에 중지 목록과 악센트 구분 등을 이용하여 다양한 분석을 할 수 있다. 자세한 내용은 MSDN을 참고 한다.

참고 링크 : http://msdn.microsoft.com/ko-kr/library/cc280463.aspx




강성욱 / jevida@naver.com

Microsoft SQL Server MVP

Blog : http://sqlmvp.kr

Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 39800
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 21797
1714 DMV를 이용한 SQL Server 성능 카운터 확인 jevida(강성욱) 2016.09.13 1915
1713 DMV를 이용한 SQL Server IO 성능 모니터 스냅샷 만들기 jevida(강성욱) 2016.09.13 1300
1712 DMV를 활용한 SQL Server 모니터링 jevida(강성욱) 2016.09.13 1386
1711 세션에 따른 캐시된 쿼리 플랜 설정 확인 jevida(강성욱) 2016.09.13 928
1710 SQL Server 특정 세션에 대한 마지막 실행 문장 확인 jevida(강성욱) 2016.09.13 785
1709 DMV - 데이터베이스 버퍼 메모리 사용량 확인 jevida(강성욱) 2016.09.13 3154
» Sys.dm_fts_parser을 이용한 문자열 구문 분석 jevida(강성욱) 2016.09.13 1406
1707 DMV에서 SQL Server 리소스 데이터베이스 값 jevida(강성욱) 2016.09.13 1123
1706 키워드로 PROCEDURE, FUNCTION 찾기 jevida(강성욱) 2016.09.13 1675
1705 BCP 사용 jevida(강성욱) 2016.09.13 3641
1704 DATEADD를 사용한 날짜 추가 및 빼기 jevida(강성욱) 2016.09.13 1210
1703 Change Data Capture(CDC) – 변경 이력 추적 jevida(강성욱) 2016.09.13 3117
1702 SSMS 에서 디버깅 하기 jevida(강성욱) 2016.09.13 9555
1701 CLR 등록 및 활성화 하기 jevida(강성욱) 2016.09.13 1770
1700 SQL Server 확장 이벤트를 사용한 Tempdb 병목현상 추적 jevida(강성욱) 2016.09.13 1696
1699 MAXDOP 설정 jevida(강성욱) 2016.09.13 2005
1698 SQL Server 이름 변경 하기 jevida(강성욱) 2016.09.13 1717
1697 SQL Server 마지막 시작 시간 확인 하기 jevida(강성욱) 2016.09.13 753
1696 여러 포트를 사용하도록 SQL Server 구성 jevida(강성욱) 2016.09.13 1952
1695 SQL Server가 사용중인 TCP/IP 포트 확인 jevida(강성욱) 2016.09.13 11699





XE Login