데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

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
1711 세션에 따른 캐시된 쿼리 플랜 설정 확인 jevida(강성욱) 2016.09.13 866
1710 SQL Server 특정 세션에 대한 마지막 실행 문장 확인 jevida(강성욱) 2016.09.13 713
1709 DMV - 데이터베이스 버퍼 메모리 사용량 확인 jevida(강성욱) 2016.09.13 2984
» Sys.dm_fts_parser을 이용한 문자열 구문 분석 jevida(강성욱) 2016.09.13 1291
1707 DMV에서 SQL Server 리소스 데이터베이스 값 jevida(강성욱) 2016.09.13 1063
1706 키워드로 PROCEDURE, FUNCTION 찾기 jevida(강성욱) 2016.09.13 1565
1705 BCP 사용 jevida(강성욱) 2016.09.13 3380
1704 DATEADD를 사용한 날짜 추가 및 빼기 jevida(강성욱) 2016.09.13 1153
1703 Change Data Capture(CDC) – 변경 이력 추적 jevida(강성욱) 2016.09.13 2475
1702 SSMS 에서 디버깅 하기 jevida(강성욱) 2016.09.13 7080
1701 CLR 등록 및 활성화 하기 jevida(강성욱) 2016.09.13 1565
1700 SQL Server 확장 이벤트를 사용한 Tempdb 병목현상 추적 jevida(강성욱) 2016.09.13 1609
1699 MAXDOP 설정 jevida(강성욱) 2016.09.13 1796
1698 SQL Server 이름 변경 하기 jevida(강성욱) 2016.09.13 1575
1697 SQL Server 마지막 시작 시간 확인 하기 jevida(강성욱) 2016.09.13 702
1696 여러 포트를 사용하도록 SQL Server 구성 jevida(강성욱) 2016.09.13 1812
1695 SQL Server가 사용중인 TCP/IP 포트 확인 jevida(강성욱) 2016.09.13 10929
1694 SQL Server SP_Congifure 변경 사항 캡처 jevida(강성욱) 2016.09.13 2061
1693 SQL Server Net Libraries jevida(강성욱) 2016.09.13 1109
1692 SQL Server 별칭 설정 및 사용 jevida(강성욱) 2016.09.13 2648





XE Login