Mise à jour du projet : je termine mon travail avec Stork. Merci à tous ceux qui ont apprécié utiliser Stork au cours des dernières années ! |
Recherche Web incroyablement rapide, conçue pour les sites statiques.
Stork est une bibliothèque permettant de créer des interfaces de recherche en texte intégral belles, rapides et précises sur le Web.
Il se décline en deux parties. Premièrement, il s'agit d'un outil de ligne de commande qui indexe le contenu et crée un fichier d'index de recherche que vous pouvez télécharger sur un serveur Web. Deuxièmement, il s'agit d'une bibliothèque Javascript qui utilise ce fichier d'index pour créer une interface de recherche interactive qui affiche immédiatement les résultats de recherche optimaux à votre utilisateur, au fur et à mesure de sa saisie.
Stork est construit avec Rust et la bibliothèque Javascript utilise WebAssembly en arrière-plan. Il est facile de démarrer et encore plus facile à personnaliser pour répondre à vos besoins. Il est parfait pour les sites Jamstack et les blogs personnels, mais peut être utilisé partout où vous avez besoin d'une barre de recherche interactive.
Actuellement en développement par James Little
Mettons en ligne un champ de recherche qui recherche dans le texte des Federalist Papers.
Regardez cette démo en direct sur https://stork-search.net.
<!DOCTYPE html >
< html lang =" en " >
< head >
< title > Federalist Search </ title >
</ head >
< body >
< div class =" stork-wrapper " >
< input data-stork =" federalist " class =" stork-input " />
< div data-stork =" federalist-output " class =" stork-output " > </ div >
</ div >
< script src =" https://files.stork-search.net/stork.js " > </ script >
< script >
stork . register (
"federalist" ,
"http://files.stork-search.net/federalist.st"
) ;
</ script >
</ body >
</ html >
Stork s'intègre au code HTML existant que vous incluez sur votre page. Chaque instance de Stork doit avoir un hook d'entrée et une liste de résultats ; ces deux éléments doivent être placés dans un wrapper, bien que le wrapper soit facultatif.
Le hook d'entrée doit avoir l'attribut data-stork="federalist"
, où federalist
est le nom sous lequel vous enregistrez cette instance de recherche. (De cette façon, vous pouvez avoir plusieurs champs de recherche indépendants sur une page, tous pointant vers des instances différentes.) Il n'est pas nécessaire que ce soit federalist
- vous pouvez le modifier comme vous le souhaitez.
La liste des résultats doit être une balise <div>
vide avec l'attribut data-stork="federalist-results"
. Encore une fois, ici, vous pouvez changer federalist
comme vous le souhaitez.
Les classes de l'exemple ci-dessus ( stork-input
, stork-output
) sont destinées au thème. La plupart des thèmes Stork adoptent le format ci-dessus ; la documentation du thème vous dira si cela nécessite quelque chose de différent. Vous pouvez également concevoir votre propre thème, auquel cas le style et les noms de classe dépendent de vous.
Vous devez inclure stork.js
, que vous pouvez soit charger à partir du CDN Stork, soit héberger vous-même. Cela chargera le blob Stork WebAssembly et créera l'objet Stork, qui permettra d'enregistrer et de configurer les index.
Ensuite, vous devez enregistrer au moins un index :
stork . register ( "federalist" , "http://files.stork-search.net/federalist.st" ) ;
L'index de recherche que vous créez doit être stocké quelque part avec une URL publique. Pour vous inscrire
Celui-ci enregistre l'index stocké sur http://files.stork-search.net/federalist.st
sous le nom federalist
; les attributs data-stork
dans le HTML s'accrocheront à ce nom.
Enfin, vous pouvez définir certaines options de configuration sur la manière dont votre barre de recherche interagira avec l'index et avec la page.
Vous ne souhaitez probablement pas ajouter à votre propre site Web une interface vous permettant d'effectuer des recherches dans les journaux fédéralistes. Voici comment personnaliser votre barre de recherche.
Pour créer un index, vous avez besoin de l'exécutable Stork sur votre ordinateur, que vous pouvez installer dans la dernière version de Github ou en exécutant cargo install stork-search --locked
si une chaîne d'outils Rust est installée.
L'index de recherche est basé sur une structure de document : vous donnez à Stork une liste de documents sur le disque et incluez des métadonnées sur ces documents, et Stork construira son index de recherche en fonction du contenu de ces documents.
Tout d’abord, vous avez besoin d’un fichier de configuration qui décrit, entre autres, cette liste de fichiers :
[ input ]
base_directory = " test/federalist "
files = [
{ path = " federalist-1.txt " , url = " /federalist-1/ " , title = " Introduction " },
{ path = " federalist-2.txt " , url = " /federalist-2/ " , title = " Concerning Dangers from Foreign Force and Influence " },
{ path = " federalist-3.txt " , url = " /federalist-3/ " , title = " Concerning Dangers from Foreign Force and Influence 2 " },
{ path = " federalist-4.txt " , url = " /federalist-4/ " , title = " Concerning Dangers from Foreign Force and Influence 3 " },
{ path = " federalist-5.txt " , url = " /federalist-5/ " , title = " Concerning Dangers from Foreign Force and Influence 4 " },
{ path = " federalist-6.txt " , url = " /federalist-6/ " , title = " Concerning Dangers from Dissensions Between the States " },
{ path = " federalist-7.txt " , url = " /federalist-7/ " , title = " Concerning Dangers from Dissensions Between the States 2 " },
{ path = " federalist-8.txt " , url = " /federalist-8/ " , title = " The Consequences of Hostilities Between the States " },
{ path = " federalist-9.txt " , url = " /federalist-9/ " , title = " The Union as a Safeguard Against Domestic Faction and Insurrection " },
{ path = " federalist-10.txt " , url = " /federalist-10/ " , title = " The Union as a Safeguard Against Domestic Faction and Insurrection 2 " }
]
Ce fichier TOML décrit le répertoire de base de tous vos documents, puis répertorie chaque document ainsi que l'URL Web à laquelle ce document sera trouvé, ainsi que le titre de ce document.
À partir de là, vous pouvez créer votre index de recherche en exécutant :
$ stork build --input federalist.toml --output federalist.st
Cela créera un nouveau fichier sur federalist.st
. Vous pouvez le parcourir avec le même outil de ligne de commande :
$ stork search --index federalist.st --query " liberty "
Pour intégrer une interface de recherche Stork sur votre site Web, téléchargez d'abord le fichier d'index sur votre serveur Web, puis transmettez son URL à la fonction stork.register()
dans le Javascript de votre page Web.
Vous pouvez lire plus de documentation et en savoir plus sur la personnalisation sur le site Web du projet : https://stork-search.net.
Pour construire Stork, vous aurez besoin de :
Le référentiel est structuré comme un espace de travail Cargo typique, avec quelques modifications.
stork-*
contiennent les packages Rust. stork-cli
et stork-wasm
sont les packages de niveau supérieur ; tout le reste est une dépendance.js
contient le code source Javascript.test-assets
contient les actifs binaires requis par les tests fonctionnels de Stork.local-dev
contient les fichiers de configuration, les corpus et les fichiers d'index nécessaires pour créer et exécuter la page Web de test utilisée pour le développement local.Vous pouvez créer le projet en utilisant soit le point d'entrée Rust, soit le point d'entrée Javascript (les instructions de construction sont répertoriées ci-dessous). Après avoir construit le projet, vous verrez trois autres répertoires :
target
contient les artefacts de construction binaire de sortiepkg
contient des artefacts de construction WASM intermédiairesdist
contient les artefacts de construction finaux pour le Web. Si vous souhaitez extraire les artefacts finaux de build Stork, vous pouvez extraire les fichiers suivants après avoir construit le projet avec yarn build
:
/target/release/stork
/dist/stork.js
/dist/stork.wasm
just build-indexer
construira le binaire de l'indexeur vers target/release/stork
just build-js
construira le binaire WASM et le code de pontage Javascript vers le répertoire dist
just build-federalist-index
de créer le fichier d'index fédéralist.st référencé tout au long du projet. Il sera affiché dans local-dev/test-indexes/federalist.st
.just build-indexer-dev
construira le binaire de l'indexeurcargo run -- <CLI OPTIONS>
exécutera le binaire de l'indexeurjust build-dev-site
construira le code de pont WASM et Javascript, construira l'index fédéralist.st et emballera le site de développement./scripts/serve.sh
servira le site de développementJetez un œil au Justfile du projet pour plus de scripts disponibles.