공간 인덱스는 R-Tree 인덱스 알고리즘을 이용해 2차원의 데이터를 인덱싱하고 검색하는 목적의 인덱스다.
최근 GPS나 지도 서비스와 같이 위치 기반 서비스를 구현하는 방법 중에 하나로 MySQL의 공간 확장을 이용하면 간단하게 이러한 기능을 구현할 수 있다.
MySQL의 공간 확장을 이용하면 이러한 기능을 구현할 수 있다.
공간 확장의 세가지 기능
MySQL의 B-Tree 인덱스는 실제 컬럼이 1MB이더라도 전체 값을 인덱스 키로 사용하는 것이 아니라, 1000 바이트 또는 3072바이트 까지만 잘라서 인덱스 키로 사용한다.
전체 일치 또는 좌측 일부 일치와 같은 검색만 가능하다.
문서 내용 전체를 인덱스화해서 특정 키워드가 포함된 문서를 검색하는 전문(Full Text) 검색에는 일반적인 B-Tree 인덱스를 사용할 수 없다.
문서 전체에 대한 분석과 검색을 위한 인덱싱 알고리즘을 전문 검색 인덱스라고 한다.
MeCab을 위한 형태소 분석은 매우 전문적인 전문 검색 알고리즘이어서 만족할 만한 결과를 내려면 많은 시간과 노력이 필요하다.
n-gram은 단순히 키워드를 검색해내기 위한 인덱싱 알고리즘이라서 보다 범용적으로 사용할 수 있다.
본문을 무조건 몇 글자씩 잘라서 인덱싱하는 방법이다.
n-gram에서 n은 인덱싱할 키워드의 최소 글자 수를 의미하는데, 일반적으로 2글자 단위로 키워드를 쪼개서 인덱싱하는 2-gram 방식이 많이 사용된다.