Meilisearch QUICK 하게 설치해보기

nona·2023년 2월 9일
0

Search

목록 보기
1/1
post-custom-banner

Meilisearch는 모든 웹사이트 또는 애플리케이션과 쉽게 통합되는 사용자 중심의 오픈 소스 검색 엔진입니다. 입력 방식 검색, 오타 허용, 패싯 검색, 지역 검색, 멀티 테넌시 등의 강력한 기본 제공 기능이 특징입니다. SDK 및 라이브러리 제품군을 통해 인기 있는 코딩 언어 및 웹 도구와 쉽게 연결할 수 있습니다. 언어와 관련해서는 중국어, 일본어, 히브리어, 태국어, 한국어를 비롯하여 공백을 사용하여 단어를 구분하는 모든 언어에 대한 특수 최적화를 통해 모든 언어를 지원합니다.

오픈소스 검색엔진인 Meilisearch 가 1.0 릴리즈 했다는 소식들 들어 잠깐 사용해봤습니다.

QUICK START 를 따라했습니다.

설치

설치할 위치에서 아래 명령으로 다운로드

% curl -L https://install.meilisearch.com | sh

실행 파일 한개가 다운로드 됩니다.

-rwxr--r--  1 abcd  staff  240273913  2  9 11:08 meilisearch

./meilisearch 명령을 통해 7700 포트로 실행됩니다.

888b     d888          d8b 888 d8b                                            888
8888b   d8888          Y8P 888 Y8P                                            888
88888b.d88888              888                                                888
888Y88888P888  .d88b.  888 888 888 .d8888b   .d88b.   8888b.  888d888 .d8888b 88888b.
888 Y888P 888 d8P  Y8b 888 888 888 88K      d8P  Y8b     "88b 888P"  d88P"    888 "88b
888  Y8P  888 88888888 888 888 888 "Y8888b. 88888888 .d888888 888    888      888  888
888   "   888 Y8b.     888 888 888      X88 Y8b.     888  888 888    Y88b.    888  888
888       888  "Y8888  888 888 888  88888P'  "Y8888  "Y888888 888     "Y8888P 888  888

Config file path:	"none"
Database path:		"./data.ms"
Server listening on:	"http://localhost:7700"
Environment:		"development"
Commit SHA:		"5e12af88e2575a42f53bb3907aea42d7cd4b8b20"
Commit date:		"2023-02-01T11:07:46Z"
Package version:	"1.0.0"

Thank you for using Meilisearch!

이제 http://localhost:7700 를 통해 검색 테스트 페이지에 접속이 가능합니다.

샘플 데이터셋 추가

안내의 movies.json 파일을 다운로드 받고 파일 위치에섯 아래 명령을 실행합니다.

curl \
  -X POST 'http://localhost:7700/indexes/movies/documents?primaryKey=id' \
  -H 'Content-Type: application/json' \
  --data-binary @movies.json

개발 언어별로 제공된 모듈을 사용해서 추가도 가능합니다.

인덱싱이 완료되면 테스트 페이지에 표시됩니다.

검색어를 입력하니 검색결과가 빠르게 표시 됩니다.

한글 샘플 데이터셋 추가

한국어가 공식 지원되니 테스트를 해보고 싶어졌습니다.

const fs = require('fs')

const charArr = ['가', '나', '다', '라', '마', '바', '사', '아', '자', '타', '카', '타', '파', '하', ' ', '  ', '   ', '\n']
const randomData = Array(1000000).fill().map((_, i) => {
  const ramdomText = charArr.sort(() => Math.random() - 0.5).join('')
  return {
    id: i,
    contents: ramdomText
  }
})

fs.writeFile('./test.json', JSON.stringify(randomData, undefined, 2), () => {})

대충 의미없는 100만개 데이터를 넣어봅니다.
(더 많이 넣고 싶었지만 위 형태로 writeFile 은 사이즈 오류가 발생하네요. 큰 파일은 인덱싱 요청도 오류가 발생해 별도 처리가 필요 해 보입니다.)

% curl \        
  -X POST 'http://localhost:7700/indexes/test01/documents?primaryKey=id' \
  -H 'Content-Type: application/json' \
  --data-binary @test.json  

약간의 시간이 소요되고 데이터가 추가되었습니다.

몇몇 검색어를 넣어봤더니 잘 됩니다.
다음엔 의미있는 단어로도 샘플링 해봐야겠네요.

다만 테스트 검색 페이지에서 검색어 부분 활성화 표시가 한글은 영역을 더 잡네요. 글자수 * 2를 하는 듯...

정리

설치 방법과 사용방법이 간단해서 가볍게 검색엔진이 필요한 서비스에 사용하기 괜찮아 보였습니다.

간단 설치기는 여기까지만.

profile
개발 놀이 중
post-custom-banner

0개의 댓글