Mon article de blog : Outils de recherche WebAssembly pour les sites statiques
Crane est une démo technique inspirée de Stork et utilise une configuration de fichier de configuration presque identique. Il fallait donc aussi qu’il porte le nom d’un oiseau.
Je l'ai écrit pour m'aider à comprendre comment fonctionnent les outils de recherche WebAssembly. Veuillez plutôt utiliser Stork.
Crane est composé de deux programmes. Le premier programme analyse un groupe de documents et crée un index efficace. 1 Mo de texte et de métadonnées est transformé en un index de 25 Ko (14 Ko compressés). Le deuxième programme est un module Wasm qui est envoyé au navigateur avec un peu de code de colle JavaScript et l'index. Le résultat est un moteur de recherche instantané qui aide les utilisateurs à trouver des pages Web au fur et à mesure qu'ils tapent.
Visitez la démo
Le moteur de recherche en texte intégral est alimenté en partie par le code du billet de blog d'Artem Krylysov Construisons un moteur de recherche en texte intégral.
Aucun effort n'a été fait pour réduire le binaire Wasm. Voir Réduire la taille des fichiers Wasm.
Décrivez vos fichiers de documents et leurs métadonnées.
[ input ]
files = [
{
path = " docs/essays/essay01.txt " ,
url = " essays/essay01.txt " ,
title = " Introduction "
},
# etc.
]
[ output ]
filename = " dist/federalist.crane "
Transmettez le fichier de configuration au script de build. Vous aurez besoin d'un nouvel index chaque fois que vos documents changent, mais vous n'aurez besoin de créer le module Wasm qu'une seule fois.
./build-index.sh federalist.toml
./build-search.sh
Hébergez les fichiers de /dist
sur votre site Web (par exemple wasm_exec.js
, crane.js
, crane.wasm
, federalist.crane
). Et c'est parti !
const crane = new Crane ( "crane.wasm" , "federalist.crane" ) ;
await crane . load ( ) ;
const results = crane . query ( 'some keywords' ) ;
console . log ( results ) ;
Voir la démo dans /docs
pour une interface utilisateur de base.
./gh-pages.sh