MS-SQL

전체 텍스트 인덱스, 전체 텍스트 카달로그

쿠카이든 2022. 12. 11. 00:10
728x90
전체 텍스트 검색 : 긴 문장으로 구성된 열의 내용을 검색 할때 인덱스를 사용할 수 없지만 인덱스를 사용할 수 있는 것처럼 만들어서 검색을 빠르게 하는 것

SELECT문의 WHERE or FROM 전에 관련된 키워드를 사용 

 

SELECT * FROM FulltextTbl WHERE description LIKE '%남자%';

: 이렇게 하면 index 검색이 아닌 table scan

 

CREATE FULLTEXT CATALOG movieCatalog AS DEFAULT;

: 전체 텍스트 인덱스가 저장될 가상의 공간

 

CREATE FULLTEXT INDEX ON FullTextTbl(description)

KEY INDEX pk_id

ON movieCatalog

WITH CHANGE_TRACKING AUTO; // 니가 알아서 변경된 건 관리해줘

: 전체 텍스트 검색 table 생성

 

SELECT * FROM sys.fulltext_indexes;

: 전체 텍스트 인덱스를 보여줘라 

 

SELECT * FROM sys.dm_fts_index_keywords(DB_ID(), OBJECT_ID('dbo.FulltextTbl'));

 

DROP FULLTEXT INDEX ON FulltextTbl;

 

1) 일반 인덱스는 테이블 당 여러개를 생성할 수 있지만 전체 텍스트 인덱스는 테이블 당 하나만 생성

2) 일반 인덱스 INSERT,UPDATE,DELETE 되면 인덱스도 자동으로 엡데이트 -> 전체 텍스트 인덱스에 데이터를 추가하는 채우기는 일정 예약이나 특별한 요청에 의해서 수행되거나 새로운 데이터를 insert 시에 자동으로 수행되도록 한다

3) 전체 텍스트 인덱스는 char, varchar 등의 열에 생성이 가능하다

4) 전체 텍스트 인덱스를 생성할 테이블에는 Primary / Unique Key가 존재해야 한다 

 

전체 텍스트 인덱스 채우기 : 인덱스를 생성하고 관리하는 것

 

1) 전체 채우기 : 인덱스를 생성할 때 지정한 열의 모든 데이터 행에 대해서 인덱스를 생성하는 것을 의미

2) 변경 내용 추적 기반 채우기

 

중지단어 : 각 단어마다 index가 들어가지만 잘 사용하지 않는 것들을 중지하는 것

 

전체 텍스트 -> 오른쪽 클릭 -> 새 전체 텍스트 중지 목록

 

전체 중지 텍스트 목록 이름 생성 & 시스템 중지 목록 새로 만들기

 

새로 만든 중지 목록 -> 속성

 

중지 단어 쓰고 확인 (여러개 입력하고 싶으면 위의 그림과 현재의 그림 반복)

 

전체 인덱스 정의 -> 마지막으로 텍스트 정의! -> 계속을 누르고 정지 index를 만든 것을 선택

 

CONTAINS문

 

SELECT * FROM newspaper WHERE CONTAINS (article,'영화');

: 기사에 영화라는 단어가 들어간 기사를 찾음

단 '한국영화', 실험영화' 등의 단어가 들어간 열은 검색되지 않음

 

SELECT * FROM newspaper WHERE CONTAINS (article,'영화 OR 배우');

 

SELECT * FROM newspaper WHERE CONTAINS (article,'영화*');

: '영화가 앞글자에 들어간 기사

 

SELECT * FROM newspaper WHERE CONTAINS (article, 'NEAR((영화,배우),2)'); 

: 영화와 배우 사이에 2개의 단어가 들어가도 괜찮음

ex) 영화에 출연한 배우

 

SELECT * FROM newspaper WHERE CONTAINS (article, 'ISABOUT (영화 weight (1.0), 배우 weight (0.5))'); 

: 영화라는 단어가 가중치를 많이 주고 배우라는 단어에 가중치를 적게 준다

 

SELECT * FROM newspaper WHERE FREETEXT (article, '영화에 출연한 배우');

: 영화에 출연한 배우와 비슷한 단어들을 포함한 기사의 내용을 검색 

 

SELECT * FROM CONTAINSTABLE (newspaper, article,'영화');

: 검색한 단어를 포함한 열의 인덱스의 키 값 및 순위를 돌려줌

 

출처 : https://dlwodus.tistory.com/392

 

[SQL SERVER] 전체 텍스트 검색 & XML

1. 전체 텍스트 검색 : 긴 문장으로 구성된 열의 내용을 검색 할때 인덱스를 사용할 수 없지만 인덱스를 사용할 수 있는 것처럼 만들어서 검색을 빠르게 하는 것SELECT문의 WHERE or FROM 전에 관련된

dlwodus.tistory.com

 

728x90