Actualización del proyecto : Estoy terminando mi trabajo con Stork. ¡Gracias a todos los que disfrutaron usando Stork durante los últimos años! |
Búsqueda web increíblemente rápida, diseñada para sitios estáticos.
Stork es una biblioteca para crear interfaces de búsqueda de texto completo hermosas, rápidas y precisas en la web.
Viene en dos partes. Primero, es una herramienta de línea de comandos que indexa contenido y crea un archivo de índice de búsqueda que puede cargar en un servidor web. En segundo lugar, es una biblioteca Javascript que utiliza ese archivo de índice para crear una interfaz de búsqueda interactiva que muestra resultados de búsqueda óptimos inmediatamente al usuario, a medida que escribe.
Stork está construido con Rust y la biblioteca Javascript usa WebAssembly detrás de escena. Es fácil comenzar y es aún más fácil personalizarlo para que se ajuste a sus necesidades. Es perfecto para sitios Jamstack y blogs personales, pero puede usarse dondequiera que necesite una barra de búsqueda interactiva.
Actualmente en desarrollo por James Little
Pongamos un cuadro de búsqueda en línea que busque dentro del texto de los Federalist Papers.
Vea esta demostración en vivo en 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 se engancha al HTML existente que incluyes en tu página. Cada instancia de Stork debe tener un enlace de entrada y una lista de resultados; esos dos elementos deben colocarse en un contenedor, aunque el contenedor es opcional.
El enlace de entrada debe tener el atributo data-stork="federalist"
, donde federalist
es el nombre con el que registra esa instancia de búsqueda. (De esta manera, puede tener múltiples cuadros de búsqueda independientes en una página, todos apuntando a diferentes instancias). No tiene que ser federalist
; puede cambiarlo a lo que quiera.
La lista de resultados debe ser una etiqueta <div>
vacía con el atributo data-stork="federalist-results"
. Nuevamente, aquí puedes cambiar federalist
por lo que quieras.
Las clases del ejemplo anterior ( stork-input
, stork-output
) son para el tema. La mayoría de los temas de Stork asumen el formato anterior; la documentación del tema le dirá si requiere algo diferente. También puedes diseñar tu propio tema, momento en el que el estilo y los nombres de las clases dependen de ti.
Debe incluir stork.js
, que puede cargar desde Stork CDN o alojarlo usted mismo. Esto cargará el blob Stork WebAssembly y creará el objeto Stork, que permitirá registrar y configurar índices.
Luego, debes registrar al menos un índice:
stork . register ( "federalist" , "http://files.stork-search.net/federalist.st" ) ;
El índice de búsqueda que cree debe almacenarse en algún lugar con una URL pública. Para registrarse
Esto registra el índice almacenado en http://files.stork-search.net/federalist.st
bajo el nombre federalist
; los atributos data-stork
en el HTML se conectarán a este nombre.
Finalmente, puede establecer algunas opciones de configuración sobre cómo interactuará su barra de búsqueda con el índice y con la página.
Probablemente no desee agregar una interfaz a su propio sitio web que le permita buscar en los documentos federalistas. Aquí le mostramos cómo hacer suya su barra de búsqueda.
Para crear un índice, necesita el ejecutable Stork en su computadora, que puede instalar en la última versión de Github o ejecutando cargo install stork-search --locked
si tiene instalada una cadena de herramientas Rust.
El índice de búsqueda se basa en una estructura de documento: usted le da a Stork una lista de documentos en el disco e incluye algunos metadatos sobre esos documentos, y Stork creará su índice de búsqueda basándose en el contenido de esos documentos.
Primero, necesita un archivo de configuración que describa, entre otras cosas, esa lista de archivos:
[ 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 " }
]
Este archivo TOML describe el directorio base de todos sus documentos, luego enumera cada documento junto con la URL web en la que se encontrará ese documento, junto con el título de ese documento.
Desde allí, puede crear su índice de búsqueda ejecutando:
$ stork build --input federalist.toml --output federalist.st
Esto creará un nuevo archivo en federalist.st
. Puedes buscarlo con la misma herramienta de línea de comando:
$ stork search --index federalist.st --query " liberty "
Para insertar una interfaz de búsqueda de Stork en su sitio web, primero cargue el archivo de índice en su servidor web, luego pase su URL a la función stork.register()
en el Javascript de su página web.
Puede leer más documentación y aprender más sobre la personalización en el sitio web del proyecto: https://stork-search.net.
Para construir Stork, necesitarás:
El repositorio está estructurado como un típico espacio de trabajo de Cargo, con algunas modificaciones.
stork-*
contienen paquetes de Rust. stork-cli
y stork-wasm
son los paquetes de nivel superior; todo lo demás es una dependencia.js
contiene el código fuente de Javascript.test-assets
contiene activos binarios requeridos por las pruebas funcionales de Stork.local-dev
contiene archivos de configuración, corpus y archivos de índice necesarios para crear y ejecutar la página web de prueba utilizada para el desarrollo local.Puede compilar el proyecto utilizando el punto de entrada de Rust o el punto de entrada de Javascript (las instrucciones de compilación se enumeran a continuación). Una vez que haya creado el proyecto, verá tres directorios más:
target
contiene los artefactos de compilación binarios de salida.pkg
contiene artefactos de compilación WASM intermediosdist
contiene los artefactos de compilación finales para la web. Si está interesado en extraer los artefactos finales de compilación de Stork, puede extraer los siguientes archivos después de compilar el proyecto con yarn build
:
/target/release/stork
/dist/stork.js
/dist/stork.wasm
just build-indexer
construirá el binario del indexador para target/release/stork
just build-js
construirá el binario WASM y el código puente Javascript al directorio dist
just build-federalist-index
construirá el archivo de índice federalist.st al que se hace referencia en todo el proyecto. Saldrá a local-dev/test-indexes/federalist.st
.just build-indexer-dev
construirá el binario del indexadorcargo run -- <CLI OPTIONS>
ejecutará el binario del indexadorjust build-dev-site
creará el código puente WASM y Javascript, creará el índice federalist.st y empaquetará el sitio de desarrollo../scripts/serve.sh
servirá al sitio de desarrolloEche un vistazo al Justfile del proyecto para ver más scripts disponibles.