카테고리 없음
MeiliSearch 검색 엔진 기능 분석
뽀글뽀글 개발자
2024. 9. 4. 13:32
MeiliSearch 기능
MeiliSearch 공식문서의 Features를 해석하고, 하나씩 확인해보면서 정리했다.
- 50밀리 이내의 응답 속도
- 키보드 타이핑 중에도 결과를 실시간으로 업데이트 해준다.
- 검색어를 입력하는 중에도 한글자 입력할 때마다 실시간으로 결과를 업데이트 해줄 수 있다.
- 쿼리에 오타가 있어도 원하는 결과를 가져올 수 있다.
- 중국어, 일본어, 히브리어와 라틴 알파벳을 사용하는 언어에 대해 최적화된 지원을 한다.
- 한국어에 대한 언급이 없어서 깃허브 레포지토리의 이슈를 뒤져보다가 한국어 지원이 추가된 PR을 찾았다.
- 특화된 토큰화 목록이 정의된 파일을 보면 korean이 있는 것을 볼 수 있다.
- 검색 시 전체 문서를 반환한다.
- MeiliSearch는 스키마리스를 지원한다. 즉, MongoDB, JSON 같은 Document구조에서 일부분을 찾으면 해당 Document 전체를 반환한다.
- 그럼 RDB는 어떻게 하느냐? >> RDB는 직접적으로 지원하지 않고, DB 데이터를 MeiliSearch에서 지원하는 데이터구조(JSON)로 변환하는 ETL(Extract Transform Load)프로세스가 필요하다.
- ETL을 제공하느냐? Elasticsearch의 경우 logstash, beats, elasticsearch-hadoop 등이 있고, Solr의 경우 Nifi, DIH가 있는 반면, MeiliSearch는 아직은 별도의 ETL Tools가 존재하지 않는다.
- 검색과 인덱싱 커스텀이 용이하다.
- 검색엔진의 관련성과 검색 결과의 순위를 커스텀할 수 있다.
- 검색 조건 필터링이 가능하고, faceted search가 가능하다.
- faceted search: 검색 결과를 여러 범주(faceted)로 나누어, 각 범주 내에서 추가적인 필터링을 가능하게 하는 기능
- ex) 쇼핑몰에서 "전자제품"을 검색하면, 검색 결과가 "브랜드", "가격", "평점" 등의 패싯으로 나뉘어 표시된다.
- 문서에서 검색 결과에 해당하는 부분을 강조할 수 있다.
- of, the 같은 관련없는 단어는 무시한다.
- 검색 결과로 더 많은 관련성을 포함하기 위해 동의어를 구성할 수 있다.
- RESTful API를 제공한다.
- 프론트엔드를 구현하지 않고도 검색 설정을 테스트할 수 있다.
- MeiliSearch는 대시보드를 제공하기 때문에 설치해서 해당 주소에 들어가면 대시보드를 확인할 수 있다.
- API 키 관리를 위해서 만료 날짜를 설정하고 항상 안전하게 인덱스 및 엔드포인트에 대한 접근을 제어해야한다.
- Multitenancy 환경에서 tenant token 발급을 통해 해당 tenant가 접근할 수 있는 데이터에 대한 검색 결과만 볼 수 있도록 해야한다.
- tenant: 사용자 그룹, 고객
- Multitenancy : 하나의 소프트웨어가 여러 고객에게 서비스를 제공하는 아키텍처
- 단일 HTTP 요청으로 여러 인덱스에 대한 다중 검색 쿼리를 실행할 수 있다.
- 지리적 위치를 기준으로 결과 필터링 및 정렬이 가능하다.
- 검색 중단 없이 index 변경 사항을 DB에 반영할 수 있다.
MeiliSearch 맛보기
MeiliSearch가 어떤 느낌인지 보고싶다면 https://www.imdb.com/의 검색창에서 확인해 볼 수 있다.
MeiliSearch에서 인덱스란?
관련 설정이 있는 document 그룹으로 SQL의 Table과 MongoDB의 Collection과 유사하다.
인덱스는 uid로 구별하고, 아래 정보들을 포함한다.
- PK
- 검색 요청에 반영되는 사용자가 정의한 설정 정보
- 1~N개의 documents
Reference
https://www.meilisearch.com/docs