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
2013-01-11 / 강성욱 / http://sqlmvp.kr
'SQL Server > SQL Server Tip' 카테고리의 다른 글
SQL Server 특정 세션에 대한 마지막 실행 문장 확인 (0) | 2015.07.20 |
---|---|
DMV - 데이터베이스 버퍼 메모리 사용량 확인 (0) | 2015.07.20 |
DMV에서 SQL Server 리소스 데이터베이스 값 (0) | 2015.07.20 |
키워드로 PROCEDURE, FUNCTION 찾기 (0) | 2015.07.20 |
BCP 사용 (0) | 2015.07.20 |