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를 하는 듯...
설치 방법과 사용방법이 간단해서 가볍게 검색엔진이 필요한 서비스에 사용하기 괜찮아 보였습니다.
간단 설치기는 여기까지만.