TinySearch es un motor de búsqueda ligero, rápido y de texto completo. Está diseñado para sitios web estáticos.
TinySearch está escrito en Rust y luego se compila en WebAssembly para ejecutarse en un navegador.
Se puede usar junto con generadores de sitios estáticos como Jekyll, Hugo, Zola, Cobalt o Pelican.

El archivo de índice de prueba de mi blog con alrededor de 40 publicaciones crea una carga útil WASM de 99kb (49kb Gzipped, 40kb Brotli).
Eso es más pequeño que la imagen de demostración de arriba; Entonces sí.
TinySearch es un puerto de óxido/WASM del código Python del artículo "Escribir un motor de búsqueda de texto completo usando filtros Bloom". Se puede ver como una alternativa a Lunr.JS y ElasticLunr, que son demasiado pesados para sitios web más pequeños y cargan mucho JavaScript.
Debajo del capó utiliza un filtro XOR, una dataestructura para una aproximación rápida de la membresía establecida que es más pequeña que los filtros de floración y cuco. Cada publicación de blog se convierte en un filtro que luego se serializará a una blob binaria usando Bincode. Tenga en cuenta que las tecnologías subyacentes están sujetas a cambios.
Se requiere un paquete WASM para construir el módulo WASM. Instalarlo con
cargo install wasm-packPara optimizar la salida de JavaScript, también necesitará Terser:
npm install terser -g
Si desea hacer que el websembly lo sea lo más pequeño posible, recomendamos instalar binaryen también. En MacOS puede instalarlo con HomeBrew:
brew install binaryenAlternativamente, puede descargar el binario desde la página de lanzamiento o usar el Administrador de paquetes de su sistema operativo.
Después de eso, puede instalar TinySearch en sí:
cargo install tinysearch
Se requiere un archivo JSON, que contiene el contenido al índice, como entrada. Por favor, eche un vistazo al archivo de ejemplo.
El campo body en el documento JSON es opcional y se puede omitir solo para indexar títulos.
Una vez que creó el índice, puede ejecutar
tinysearch fixtures/index.json
Esto creará un módulo WASM y el código de pegamento JavaScript para integrarlo en su sitio web. Puede abrir el demo.html de cualquier servidor web para ver el resultado.
Por ejemplo, Python tiene un servidor web incorporado que puede usarse para una prueba rápida:
python3 -m http.server
Luego navegue a http://0.0.0.0:8000/demo.html para ejecutar la demostración.
También puede echar un vistazo a los ejemplos de código para diferentes generadores de sitios estáticos aquí.
Para opciones de uso avanzado, ejecute
tinysearch --help
Verifique lo que se requiere para alojar el websembles en la producción: deberá establecer explícitamente los tipos de GZIP MIME.
Si no tiene una configuración completa de óxido disponible, también puede usar nuestras imágenes de Docker nocturnas.
Aquí le mostramos cómo probar rápidamente TinySearch con Docker:
# 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.jsonPor defecto, se usa la imagen de óxido alpino estable más reciente. Para ser nocturno, corre
docker build --build-arg RUST_IMAGE=rustlang/rust:nightly-alpine -t tinysearch/cli:nightly .WASM_REPO : sobrescribe el repositorio de paquete de wasmWASM_BRANCH : sobrescribe la rama del repositorio para usarTINY_REPO : Repositorio de sobrescribencia de TinySearchTINY_BRANCH : sobrescribir la rama de TinySearch Para integrar TinySearch en tuberías de implementación continua, hay una acción de GitHub disponible.
- name : Build tinysearch
uses : leonhfr/tinysearch-action@v1
with :
index : public/index.json
output_dir : public/wasm
output_types : |
wasm Los siguientes sitios web usan TinySearch:
¿Estás usando TinySearch también? ¡Agregue su sitio aquí!
TinySearch tiene licencia bajo cualquiera de
a tu opción.