Upload
infiniflux-korea
View
274
Download
1
Embed Size (px)
Citation preview
Full Text Search
www.infiniflux.com
Table of Contents
Overview
SEARCH
ESEARCH
REGEXP
1
2
3
4
LIKE5
2
Overview
• InfiniFlux는 Full Text Search를 지원하기 위해서 LIKE 연산자 이외에 3가지 연산자를 제공하는데
인덱스를 활용하기 때문에 LIKE 연산자 대비 빠른 조회 가능
- SEARCH : 키워드와 정확하게 match 되는 데이터를 검색
- ESEARCH : % 문자를 이용하여 패턴 match 되는 데이터를 검색
- REGEXP : 정규 표현식을 이용하여 패턴 match 되는 데이터를 검색
• 텍스트 검색을 하기 위해서는 해당 칼럼에 keyword index가 있어야 함
• VARCHAR 타입과 TEXT 타입에 대해서 지원하며, BINARY타입은 지원하지 않음
• 다국어 문자에 대한 검색도 가능함.
• 다국어 문자는 형태소를 인지하지 않기 때문에 2-GRAM 기법을 이용함.
즉, “실시간 빅데이터“ 문자열에 대해서 사전(Dictionary)에는 “실시”, “시간”,
“빅데“, “데이“, “이터“ 5가지 단어가 저장됨
• 문자 검색에는 최소한 2글자 이상 입력해야 함
3
SEARCH
Varchar 타입 또는 Text 타입 칼럼에서 키워드와 정확하게 match 되는 데이터 조회
SELECT * FROM textsearch WHERE message SEARCH ‘Error’;
• ASCII
ASCII 문자들에대해서검색한다.
4
SELECT * FROM textsearch WHERE message SEARCH ‘Error 500’;
두단어를입력하면 AND 조건으로검색한다.
SELECT * FROM textsearch WHERE message SEARCH ‘Error’ OR message SEARCH ‘Warning’;
OR 조건으로검색하려면 ‘OR’ 연산자를사용하면된다.
SELECT * FROM textsearch WHERE message SEARCH ‘실시간’;
• CJK(Chinese, Japanese, Korean)
중국어, 일본어, 한글검색을지원한다.
ESEARCH
• ASCII 단어에 대해서 % 문자를 이용하여 패턴 검색을 수행
• CJK 언어에 대해서는 동작하지 않으며 SEARCH 구문으로 ‘키워드’ 와 같은 형태로 검색 가능
SELECT * FROM textsearch WHERE message ESEARCH ‘real-time%’;
SELECT * FROM textsearch WHERE message ESEARCH ‘%data’;
SELECT * FROM textsearch WHERE message ESEARCH ‘%2016%’;
SELECT * FROM textsearch WHERE message ESEARCH ‘Error%500’;
• ASCII
ASCII 문자들에대해서검색한다.
SELECT * FROM textsearch WHERE message SEARCH ‘실시간’;
• CJK(Chinese, Japanese, Korean)
중국어, 일본어, 한글은 SEARCH 구문을이용하면된다.
REGEXP
• 정규표현식을 사용하여 패턴 검색을 수행함
• REGEXP는 인덱스를 활용할 수 없기 때문에 검색 범위를 줄여서 수행할 필요가 있음
SELECT * FROM textsearch WHERE message REGEXP ‘[A-Za-z]’;
SELECT * FROM textsearch WHERE message REGEXP ‘[가-힝]’;
SELECT * FROM textsearch WHERE message REGEXP ‘Error[0-9]’;
SELECT * FROM textsearch WHERE path REGEXP ‘\.(gif|jpg|png)’;
• REGEXP
ASCII, 다국어문자에대해서지원한다.
LIKE
SELECT * FROM textsearch WHERE message LIKE ‘Error%’;
SELECT * FROM textsearch WHERE message LIKE ‘%data%’;
SELECT * FROM textsearch WHERE message LIKE ‘%데이터’;
• LIKE
ASCII, 다국어문자에대해서지원한다.
일반적인 데이터베이스에서 사용하는 방법과 동일
InfiniFluxThe World's Fastest Time Series DBMSfor IoT and Big Data