Search Process

김영후·2022년 8월 25일
0

사용자가 검색을 요청했을 때

우리는 DB에서 해당하는 데이터를 사용자에게 보여주어야 한다.

그러나 모든 데이터베이스에서 차례로 찾아보려면 너무 많은 시간과 노력이 필요하다.


위 문제를 해결하기 위해

Inverted Index(역인덱스/역색인)을 사용한다.

일반적인 인덱스는 목차의 느낌이라면

역 인덱스는 데이터에서 키워드를 추출하여 해당하는 데이터의 Id를 저장하는 방식이다.


Elasticsearch는 데이터를 저장할 때 역 인덱스라는 구조를 만들어 저장한다.

Elasticsearch는 데이터가 늘어나더라도 찾아가야 할 행이 늘어나는 것이 아니라 역 인덱스가 나타내는 id의 배열값이 추가되는 것일 뿐이다.

그래서 비교적 성능 저하 없이 빠르게 검색이 가능하다.

보통 모든 데이터는 MySQL에 저장하고 문장 검색용 데이터를 Elasticsearch에 저장한다.



Ex) 우리는 재미있는 영화를 보았다.

우리는 / 재미있는 / 영화를 / 보았다 << 토크나이징

토큰과 id를 매치해 쉽게 검색한다.

profile
https://poagg.tistory.com/ 로 이전합니다.

0개의 댓글