TinySearch는 가볍고 빠른 전체 텍스트 검색 엔진입니다. 정적 웹 사이트를 위해 설계되었습니다.
TinySearch는 Rust로 작성된 다음 WebAsSembly로 컴파일되어 브라우저에서 실행됩니다.
Jekyll, Hugo, Zola, Cobalt 또는 Pelican과 같은 정적 현장 생성기와 함께 사용할 수 있습니다.

약 40 개의 게시물이있는 내 블로그의 테스트 인덱스 파일은 99KB (49KB Gzipped, 40KB Brotli)의 WASM 페이로드를 만듭니다.
위의 데모 이미지보다 작습니다. 그래서 네.
TinySearch는 "블룸 필터를 사용하여 전체 텍스트 검색 엔진 작성"기사의 Python 코드의 Rust/WASM 포트입니다. LUNR.JS 및 ELASTICLUNR의 대안으로 볼 수 있으며, 소규모 웹 사이트에는 너무 무겁고 많은 JavaScript를로드합니다.
후드 아래에서는 블룸 및 뻐꾸기 필터보다 작은 세트 멤버십을 빠르게 근사화하기 위해 XOR 필터를 사용합니다. 각 블로그 게시물은 필터로 변환되어 Bincode를 사용하여 이진 블로브로 직렬화됩니다. 기본 기술은 변화의 대상이됩니다.
WASM 모듈을 구축하려면 WASM-Pack이 필요합니다. 설치하십시오
cargo install wasm-packJavaScript 출력을 최적화하려면 Terser가 필요합니다.
npm install terser -g
WebAssembly를 최대한 작게 만들려면 Binaryen도 설치하는 것이 좋습니다. MacOS에서는 Homebrew로 설치할 수 있습니다.
brew install binaryen또는 릴리스 페이지에서 바이너리를 다운로드하거나 OS 패키지 관리자를 사용할 수 있습니다.
그런 다음 TinySearch 자체를 설치할 수 있습니다.
cargo install tinysearch
인덱스 할 내용이 포함 된 JSON 파일은 입력으로 필요합니다. 예제 파일을 살펴보십시오.
JSON 문서의 body 필드는 선택 사항이며 게시물 제목을 색인화하도록 건너 뛸 수 있습니다.
인덱스를 만든 후에는 실행할 수 있습니다
tinysearch fixtures/index.json
이렇게하면 WASM 모듈과 JavaScript 접착제 코드가 생성되어 웹 사이트에 통합됩니다. 모든 웹 서버에서 demo.html 열면 결과를 확인할 수 있습니다.
예를 들어, Python에는 빠른 테스트에 사용할 수있는 내장 웹 서버가 있습니다.
python3 -m http.server
그런 다음 http://0.0.0.0:8000/demo.html로 탐색하여 데모를 실행하십시오.
여기에서 다른 정적 사이트 생성기에 대한 코드 예제를 살펴볼 수도 있습니다.
고급 사용 옵션의 경우 실행하십시오
tinysearch --help
프로덕션에서 WebAssembly를 호스팅하는 데 필요한 사항을 확인하십시오. GZIP MIME 유형을 명시 적으로 설정해야합니다.
전체 녹슬 셋업을 사용할 수없는 경우 야간 제작 된 Docker 이미지를 사용할 수도 있습니다.
Docker와 함께 TinySearch를 신속하게 시도하는 방법은 다음과 같습니다.
# Download a sample blog index from endler.dev
curl -O https://raw.githubusercontent.com/tinysearch/tinysearch/master/fixtures/index.json
# Create the WASM output
docker run -v $PWD :/app tinysearch/cli --engine-version path= " /engine " --path /app/wasm_output /app/index.json기본적으로 가장 최근의 안정된 알파인 녹 이미지가 사용됩니다. 밤마다 얻으려면 달리기
docker build --build-arg RUST_IMAGE=rustlang/rust:nightly-alpine -t tinysearch/cli:nightly .WASM_REPO : WASM-PACK 리포지토리를 덮어 씁니다WASM_BRANCH : 사용할 리포지토리 브랜치를 덮어 씁니다TINY_REPO : TinySearch의 덮어 쓰레기TINY_BRANCH : TinySearch Branch를 덮어 씁니다 연속 배포 파이프 라인에 TinySearch를 통합하려면 GitHub 작업을 사용할 수 있습니다.
- name : Build tinysearch
uses : leonhfr/tinysearch-action@v1
with :
index : public/index.json
output_dir : public/wasm
output_types : |
wasm 다음 웹 사이트는 TinySearch를 사용합니다.
TinySearch도 사용하고 있습니까? 여기에 사이트를 추가하십시오!
TinySearch는 중 하나에 따라 라이센스가 부여됩니다
귀하의 선택에.