Search Process

Junyoung Song·2022년 4월 27일
0
post-thumbnail

색인(Index)

색인(index)의 경우 많은양의 데이터에서 특정한 값을 가지고 있는 데이터를 빠르게 찾기위해 사용하게 됩니다. 만약 색인이 없을경우 특정한 값을 가지고 있는 데이터를 찾기위해서는 첫번째 데이터부터 마지막 데이터까지 모두 확인해야하는 일이 생기게 됩니다. 데이터가 적을 경우는 큰 문제가 없겠지만 데이터의 양이 커지면 커질수록 시간도 오래걸리게 되고 많은 양의 리소스를 소모하게 됩니다. 이러한 상황을 방지하기위해 색인을 사용하게 됩니다. 색인을 사용 할 경우 모든 데이터를 확인하지 않아도 됩니다.

하지만 인덱스 또한 너무 많이 사용할 경우 인덱스를 사용해 찾느라 더 느려지는 경우도 생기게됩니다.대체적으로 색인의 경우는 테이블에 데이터 양이 많을 경우 사용하는데 지나치게 많은 Index를 지정하거나 NULL이 많은 칼럼, 삽입 수정이 자주이루어지는 데이터에는 사용하지 않는것이 좋습니다.

역색인(Inverted-index)

역색인이란 낱말이나 숫자와 같은 내용물로부터의 매핑 정보를 db파일의 특정 지점이나 문서 또는 문서 집합안에 저장하는 하나의 색인 데이터 구조입니다. 역색인의 목적은 빠른 전문 검색을 가능하게 해주는 것 입니다.

Elasticsearch 에서의 검색

Elasticsearch의 경우는 데이터를 저장할 때 역인덱스 구조를 만들어 저장합니다.

다음과 같은 데이터가 있을경우 Elasticsearch에서는 역인덱스를 사용하여
아래와 같이 저장합니다.

위와 같이 저장한 데이터를 바탕으로 유저가 '데드' 라는 단어를 검색할 경우 '데드'토큰에 저장되어있는 ID인 2,3을 유저에게 바로 반환해주면 되기때문에 매우 빠르게 검색이 가능해집니다.

이렇게 검색에 대해서 알아봤는데 저희가 평소 생각하는 검색과는 약간 달랐습니다. 만약 상품의 이름이 '슈퍼맨' 일경우 '슈퍼'라는 단어로 검색했을때 검색이 되지 않습니다.
이런 경우에는 Analyzer와 filter를 따로 설정해 값을 조정해주면 저희가 평소에 생각하던 검색이 완성됩니다.

0개의 댓글