SQL Server/SQL Server Tip

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

SungWookKang 2015. 7. 20. 09:38
반응형

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

 

반응형