본문 바로가기

Database/MS-SQL

DB 엑세스(Access)에서 MSSQL로 옮기는 방법 + 풀텍스트서치 (Full Text Search) (2)

반응형

                                                                     추가 수정 file










USE FTS;

USE test;

GO
EXEC sp_fulltext_database 'enable'; -- 풀텍스트 서치하겠다  풀텍스트서치할때 반드시 실행
GO

EXEC sp_fulltext_database 'disable'; -- 풀텍스트 서치 안하겠다
GO

--TEST 조회
select top 10 idx, title, writeday, content from tMSSQLQnA

--전체 건수
select count(idx) from tMSSQLQnA

--title 컬럼의 용량
select sum(datalength(title)) from tMSSQLQnA
--대략 1M

--content 컬럼의 용량
select sum(datalength(content)) from tMSSQLQnA
--대략 27M


--전문검색을 활성화 시킵니다.
if (select DATABASEPROPERTY(DB_NAME(), N'IsFullTextEnabled')) <> 1 
exec sp_fulltext_database N'enable' 
GO

--전문검색 카탈로그가 만약 존재 한다면 삭제 합니다.
if exists (select * from dbo.sysfulltextcatalogs where name = N'ftMSSQLQnA')
exec sp_fulltext_catalog N'ftMSSQLQnA', N'drop'
GO

--전문검색 카탈로그를 생성합니다.
if not exists (select * from dbo.sysfulltextcatalogs where name = N'ftMSSQLQnA')
exec sp_fulltext_catalog N'ftMSSQLQnA', N'create' 
GO

--PK확인.- 없으면 생성 합니다.
ALTER TABLE tMSSQLQnA WITH NOCHECK ADD 
CONSTRAINT PKtMSSQLQnA PRIMARY KEY CLUSTERED 
(
idx
)
GO

--전문검색에 키값을 지정합니다.
exec sp_fulltext_table N'tMSSQLQnA', N'create', N'ftMSSQLQnA', N'PK_tMSSQLQnA'

--전문검색에 컬럼추가 - content     0x0412 : 한글      0x0409 : 영어(미국)
exec sp_fulltext_column N'tMSSQLQnA', N'content', N'add', 0x0412 

--전문검색에 컬럼추가 - title
exec sp_fulltext_column N'tMSSQLQnA', N'title', N'add', 0x0412 

--전문검색 활성화를 시작합니다.
exec sp_fulltext_table N'tMSSQLQnA', N'activate' 

--풀파퓰레이션 시작
EXEC sp_fulltext_catalog 'ftMSSQLQnA', 'start_full'

--증분 파퓰레이션 시작 - Timestamp 컬럼이 없을 경우
EXEC sp_fulltext_catalog 'ftMSSQLQnA', 'start_incremental'

--Timestamp 컬럼을 테이블에 추가.
ALTER TABLE tMSSQLQnA ADD TStamp timestamp NOT NULL
GO

--증분 파퓰레이션 시작
EXEC sp_fulltext_catalog 'ftMSSQLQnA', 'start_incremental'

--필요에 의해 스케줄 구성.


--백업 키워드로 제목 검색
SELECT idx, title, writeday, content FROM tMSSQLQnA 
WHERE contains(title, '"백업"')

--백업 키워드로 글내용 검색
SELECT idx, title, writeday, content FROM tMSSQLQnA 
WHERE contains(content, '"백업"')

--백* 키워드로 제목 검색
SELECT idx, title, writeday, content FROM tMSSQLQnA 
WHERE contains(title, '"백*"')

--백업 or 리스토어 키워드로 글내용 검색
SELECT idx, title, writeday, content FROM tMSSQLQnA 
WHERE contains(content, '"백업" or "리스토어"')

--백* or 리스토어 키워드로 글내용 검색
SELECT idx, title, writeday, content FROM tMSSQLQnA 
WHERE contains(content, '"백*" or "리스토어"')

--백업 near 에러 키워드로 글내용 검색
SELECT idx, title, writeday, content FROM tMSSQLQnA 
WHERE contains(content, '백업 near 에러')

SELECT idx, title, writeday, content FROM tMSSQLQnA 
WHERE FREETEXT(content, N'에러') -- 전문검색 부분 (전문검색을위한 인덱스를 안해서 에러)

SELECT idx, title, writeday, content FROM tMSSQLQnA 
WHERE content LIKE N'%에러%' -- N'에러' OR '에러' 써도된다 (그냥 서치)

SELECT idx, title, writeday, content FROM tMSSQLQnA 
WHERE contains(content, '백업 or 에러') -- 풀텍스트 서치

SELECT idx, title, writeday, content FROM tMSSQLQnA 
WHERE contains(content, N'에러') -- 풀텍스트 서치

SELECT idx, title, writeday, content FROM tMSSQLQnA 
WHERE contains(content, N'에러')
OR contains(title,'에러') -- 풀텍스트 서치