8
Full Text Search www.infiniflux.com

InfiniFlux Full Text Search

Embed Size (px)

Citation preview

Page 1: InfiniFlux Full Text Search

Full Text Search

www.infiniflux.com

Page 2: InfiniFlux Full Text Search

Table of Contents

Overview

SEARCH

ESEARCH

REGEXP

1

2

3

4

LIKE5

2

Page 3: InfiniFlux Full Text Search

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

Page 4: InfiniFlux Full Text Search

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)

중국어, 일본어, 한글검색을지원한다.

Page 5: InfiniFlux Full Text Search

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 구문을이용하면된다.

Page 6: InfiniFlux Full Text 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, 다국어문자에대해서지원한다.

Page 7: InfiniFlux Full Text Search

LIKE

SELECT * FROM textsearch WHERE message LIKE ‘Error%’;

SELECT * FROM textsearch WHERE message LIKE ‘%data%’;

SELECT * FROM textsearch WHERE message LIKE ‘%데이터’;

• LIKE

ASCII, 다국어문자에대해서지원한다.

일반적인 데이터베이스에서 사용하는 방법과 동일

Page 8: InfiniFlux Full Text Search

[email protected]

InfiniFluxThe World's Fastest Time Series DBMSfor IoT and Big Data