MSSQL 2014 SP1 (build 12.0.4100.1)에 신규 DB(collation: Korean_Wansung_CI_AS) 를 만들고,
우편번호 테이블(zip) 도로명주소(roadname) 컬럼에 full-text-search index를 생성했습니다.
1. full text search 테스트 테이블(ziptest) 생성 후, full text search index를 생성,
zipkey roadname
------- -----------
1 벚꽃
2 벚꽃로
3 벚꽃길
10 중앙고등
11 성동고등
12 환일고등
CREATE FULLTEXT CATALOG ZipFullTextSearch
AS DEFAULT
go
CREATE FULLTEXT INDEX ON dbo.zip(roadname)
KEY INDEX zip_pk
ON ZipFullTextSearch
WITH CHANGE_TRACKING AUTO
go
-----
예를 들어 contains(roadname,N'벚꽃로')로 검색건수와 roadname like '%벚꽃로%'로 검색한 건수가 달라 확인해보니,full-text-search CONTAINS를 사용해도 'XX벚꽃길' 같은 결과까지 나와서 당황하고 있습니다.
1. where 조건으로 contains(roadname,N'벚꽃로'), contains(roadname,N'벚꽃'), contains(roadname,N'벚꽃길') 3가지를 수행한 결과 건 수가 똑같은 걸로 봐서는 동일한 결과가 나오는 것 같습니다.
zipkey roadname
------- -----------
1 벚꽃
2 벚꽃로
3 벚꽃길
조회시 contains(roadname,'고등')을 조회하면, '성동고등'이 빠집니다.
zipkey roadname
------- -----------
10 중앙고등
12 환일고등
2. SELECT * FROM sys.dm_fts_parser(N'벚꽃길', 1033, 0, 0) where special_term='Noise Word';
-- 결과를 보니 noise word를 포함하고 있지는 않습니다.
3. 다음 2개의 쿼리를 구글링해서 찾았지만, 키워드 hex 코드는 다르게 나옵니다.
SELECT * FROM sys.dm_fts_index_keywords_by_document(DB_ID(), OBJECT_ID(N'dbo.zip')) WHERE display_term LIKE N'%벚꽃길%'
SELECT * FROM sys.dm_fts_index_keywords_by_document(DB_ID(), OBJECT_ID(N'dbo.zip')) WHERE display_term LIKE N'%벚꽃로%'
고수님들의 조언을 부탁드립니다.
|