메일 본문과 같은 텍스트 데이터를 검색하는 방법은 크게 두 가지가 있습니다. 첫 번째는 SQL LIKE 검색으로 모든 텍스트를 스캔하면서 검색 키워드가 존재하는지 검사하는 방법입니다. 별도의 추가 작업 없이 간단하게 처리할 수 있으므로 일반적으로 사용됩니다. 메일캐리어 웹메일 역시 기본적으로 이 방식을 사용합니다. 특성상 검색할 텍스트 데이터가 많아지면 그 양에 비례해 검색 속도가 느려지는 문제가 있습니다.
두 번째 방법은 Full-Text 검색 기능을 사용하는 것입니다. 인터넷 검색 엔진들이 사용하는 방식으로 텍스트 데이터에서 미리 키워드를 추출해 인덱스를 구성하며 검색시는 이 인덱스를 조회해 빠르게 검색하는 방식입니다. MSSQL 서버에는 Full-Text 검색 기능이 포함되어 있고 메일캐리어 웹메일은 이 기능을 지원하고 있습니다.
메일캐리어 Full-Text 검색 기능을 사용하기 위해서는 해당 데이터베이스가 Full-Text 검색 기능을 지원하고 있는지 먼저 확인해야 합니다.
MSSQL Management Studio를 실행시켜 메일캐리어 데이터베이스에 연결한 후 다음 쿼리를 실행합니다. 결과 값이 1이 나온다면 해당 기능이 설치되어 있는 것입니다. 0이 나온다면 MSSQL 설치 프로그램을 실행시켜 Full-Text 검색 기능을 추가로 설치해야 합니다.
SELECT FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')
메시지 저장 테이블과 게시판 글 저장 테이블, 결재 문서 테이블의 검색 필드에 대해 Full-Text 인덱스를 생성합니다. 인덱스를 생성할 메시지 또는 게시글 수가 많다면 인덱스를 생성하는데 시간이 걸리며 데이터베이스 서버의 CPU 사용 및 디스크 I/O가 증가하게 됩니다. 데이터가 많고 처음 인덱스를 생성하는 경우라면 사용량이 적은 시간에 인덱스를 생성하십시오.
CREATE FULLTEXT CATALOG MailCarrierCatalog
GO
CREATE FULLTEXT INDEX ON dbo.McMailboxMsg
(mm_searchText)
KEY INDEX PK_McMailBoxMsg ON MailCarrierCatalog
WITH CHANGE_TRACKING AUTO
GO
CREATE FULLTEXT INDEX ON dbo.McBoardThread
(bt_searchText)
KEY INDEX PK_McBoardThread ON MailCarrierCatalog
WITH CHANGE_TRACKING AUTO
GO
CREATE FULLTEXT INDEX ON dbo.ApvDocument
(apd_searchText)
KEY INDEX PK_ApvDocument ON MailCarrierCatalog
WITH CHANGE_TRACKING AUTO
GO
게시판에 저장되어 있는 기존 게시글 데이터는 Full-text 소스로 사용하기에 부적합하므로 추가적인 변환 명령을 실행할 필요가 있습니다. 명령 프롬프트를 열어 메일캐리어 설치 폴더/Tools에 있는 etctools.exe 프로그램을 아래와 같이 실행합니다.
게시판을 사용하지 않거나 처음 사용하는 경우라면 아래 명령 실행은 필요없습니다.
C:\Program Files\TABS\MailCarrier\7.0\Tools>etctools.exe buildboardsearchtext
메일캐리어 웹메일은 SQL Like 검색과 Full-Text 검색 방법을 모두 지원하고 있습니다. 웹메일 Web.config 파일에서 UseFulltextSearch 값을 true로 지정하면 LIKE 검색 대신 Full-Text 검색을 시도하게 됩니다.
<add key="UseFulltextSearch" value="true" />
추가되는 메일/게시글/결재 데이터에 대해 지속적으로 인덱스가 생성되므로 MSSQL 서버 부하가 일정 부분 늘어나게 됩니다.
Full-Text 인덱스를 저장하기 위해 추가적인 디스크 저장 공간을 필요로 합니다.
웹메일 Web.config 파일에서 UseFulltextSearch 값을 false로 지정합니다.
아래 쿼리를 실행해 생성된 인덱스를 제거합니다.
DROP FULLTEXT INDEX ON dbo.McMailboxMsg
GO
DROP FULLTEXT INDEX ON dbo.McBoardThread
GO
DROP FULLTEXT INDEX ON dbo.ApvDocument
GO
DROP FULLTEXT CATALOG MailCarrierCatalog
GO