Publicación de mi blog: Herramientas de búsqueda de WebAssembly para sitios estáticos
Crane es una demostración técnica inspirada en Stork y utiliza una configuración de archivo de configuración casi idéntica. Así que también debía llevar el nombre de un pájaro.
Lo escribí para ayudarme a comprender cómo funcionan las herramientas de búsqueda de WebAssembly. Utilice Stork en su lugar.
Crane son dos programas. El primer programa escanea un grupo de documentos y crea un índice eficiente. 1 MB de texto y metadatos se convierte en un índice de 25 KB (14 KB comprimidos con gzip). El segundo programa es un módulo Wasm que se envía al navegador junto con un poco de código JavaScript y el índice. El resultado es un motor de búsqueda instantáneo que ayuda a los usuarios a encontrar páginas web mientras escriben.
Visita la demostración
El motor de búsqueda de texto completo funciona en parte con código de la publicación del blog de Artem Krylysov Construyamos un motor de búsqueda de texto completo.
No se ha hecho ningún esfuerzo por reducir el binario Wasm. Consulte Reducir el tamaño de los archivos Wasm.
Describe los archivos de tus documentos y sus metadatos.
[ input ]
files = [
{
path = " docs/essays/essay01.txt " ,
url = " essays/essay01.txt " ,
title = " Introduction "
},
# etc.
]
[ output ]
filename = " dist/federalist.crane "
Pase el archivo de configuración al script de compilación. Querrá un índice nuevo cada vez que cambien sus documentos, pero solo necesitará crear el módulo Wasm una vez.
./build-index.sh federalist.toml
./build-search.sh
Aloje los archivos de /dist
en su sitio web (por ejemplo, wasm_exec.js
, crane.js
, crane.wasm
, federalist.crane
). ¡Y vete!
const crane = new Crane ( "crane.wasm" , "federalist.crane" ) ;
await crane . load ( ) ;
const results = crane . query ( 'some keywords' ) ;
console . log ( results ) ;
Vea la demostración dentro de /docs
para ver una interfaz de usuario básica.
./gh-pages.sh