Atualização do projeto : Estou encerrando meu trabalho com a Stork. Obrigado a todos que gostaram de usar o Stork nos últimos anos! |
Pesquisa na web incrivelmente rápida, feita para sites estáticos.
Stork é uma biblioteca para criar interfaces de pesquisa de texto completo bonitas, rápidas e precisas na web.
Ele vem em duas partes. Primeiro, é uma ferramenta de linha de comando que indexa conteúdo e cria um arquivo de índice de pesquisa que você pode carregar em um servidor web. Em segundo lugar, é uma biblioteca Javascript que usa esse arquivo de índice para construir uma interface de pesquisa interativa que exibe resultados de pesquisa ideais imediatamente para o usuário, à medida que ele digita.
Stork é construído com Rust, e a biblioteca Javascript usa WebAssembly nos bastidores. É fácil começar e ainda mais fácil de personalizar para atender às suas necessidades. É perfeito para sites Jamstack e blogs pessoais, mas pode ser usado sempre que você precisar de uma barra de pesquisa interativa.
Atualmente em desenvolvimento por James Little
Vamos colocar uma caixa de pesquisa online que pesquise o texto dos Artigos Federalistas.
Veja esta demonstração ao vivo em 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 conecta ao HTML existente que você inclui em sua página. Cada instância do Stork deve ter um gancho de entrada e uma lista de resultados; esses dois elementos devem ser colocados em um wrapper, embora o wrapper seja opcional.
O gancho de entrada deve ter o atributo data-stork="federalist"
, onde federalist
é o nome com o qual você registra aquela instância de pesquisa. (Dessa forma, você pode ter várias caixas de pesquisa independentes em uma página, todas apontando para instâncias diferentes.) Não precisa ser federalist
– você pode alterá-lo para o que quiser.
A lista de resultados deve ser uma tag <div>
vazia com o atributo data-stork="federalist-results"
. Novamente, aqui você pode mudar federalist
para o que quiser.
As classes do exemplo acima ( stork-input
, stork-output
) são para o tema. A maioria dos temas do Stork assume o formato acima; a documentação do tema informará se for necessário algo diferente. Você também pode criar seu próprio tema, e nesse ponto o estilo e os nomes das classes são com você.
Você precisa incluir stork.js
, que você pode carregar do CDN do Stork ou hospedar você mesmo. Isso carregará o blob Stork WebAssembly e criará o objeto Stork, que permitirá registrar e configurar índices.
Então, você deve registrar pelo menos um índice:
stork . register ( "federalist" , "http://files.stork-search.net/federalist.st" ) ;
O índice de pesquisa que você cria precisa ser armazenado em algum lugar com uma URL pública. Para registrar
Isto registra o índice armazenado em http://files.stork-search.net/federalist.st
sob o nome federalist
; os atributos data-stork
no HTML serão vinculados a esse nome.
Finalmente, você pode definir algumas opções de configuração de como sua barra de pesquisa irá interagir com o índice e com a página.
Você provavelmente não deseja adicionar uma interface ao seu próprio site que permita pesquisar nos documentos federalistas. Veja como tornar sua barra de pesquisa sua.
Para construir um índice, você precisa do executável Stork em seu computador, que pode ser instalado na versão mais recente do Github ou executando cargo install stork-search --locked
se você tiver um conjunto de ferramentas Rust instalado.
O índice de pesquisa é baseado em uma estrutura de documento: você fornece ao Stork uma lista de documentos em disco e inclui alguns metadados sobre esses documentos, e o Stork construirá seu índice de pesquisa com base no conteúdo desses documentos.
Primeiro, você precisa de um arquivo de configuração que descreva, entre outras coisas, essa lista de arquivos:
[ 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 arquivo TOML descreve o diretório base de todos os seus documentos e, em seguida, lista cada documento junto com o URL da web em que o documento será encontrado, junto com o título do documento.
A partir daí, você pode criar seu índice de pesquisa executando:
$ stork build --input federalist.toml --output federalist.st
Isso criará um novo arquivo em federalist.st
. Você pode pesquisá-lo com a mesma ferramenta de linha de comando:
$ stork search --index federalist.st --query " liberty "
Para incorporar uma interface de pesquisa Stork em seu site, primeiro carregue o arquivo de índice em seu servidor web e, em seguida, passe sua URL para a função stork.register()
no Javascript de sua página web.
Você pode ler mais documentação e aprender mais sobre customização no site do projeto: https://stork-search.net.
Para construir o Stork, você precisará de:
O repositório está estruturado como um típico espaço de trabalho do Cargo, com algumas modificações.
stork-*
contêm pacotes Rust. stork-cli
e stork-wasm
são os pacotes de nível superior; todo o resto é uma dependência.js
contém o código-fonte Javascript.test-assets
contém ativos binários exigidos pelos testes funcionais da Stork.local-dev
contém arquivos de configuração, corpora e arquivos de índice necessários para construir e executar a página da web de teste usada para desenvolvimento local.Você pode construir o projeto usando o ponto de entrada Rust ou o ponto de entrada Javascript (as instruções de construção estão listadas abaixo). Depois de criar o projeto, você verá mais três diretórios:
target
contém os artefatos de construção binários de saídapkg
contém artefatos de construção WASM intermediáriosdist
contém os artefatos finais de construção para a web. Se estiver interessado em extrair os artefatos finais de construção do Stork, você pode extrair os seguintes arquivos após construir o projeto com yarn build
:
/target/release/stork
/dist/stork.js
/dist/stork.wasm
just build-indexer
irá construir o binário do indexador para target/release/stork
just build-js
construirá o binário WASM e o código de ponte Javascript para o diretório dist
just build-federalist-index
criará o arquivo de índice federalist.st que é referenciado em todo o projeto. A saída será local-dev/test-indexes/federalist.st
.just build-indexer-dev
irá construir o binário do indexadorcargo run -- <CLI OPTIONS>
executará o binário do indexadorjust build-dev-site
irá construir o código-ponte WASM e Javascript, construir o índice federalist.st e empacotar o site de desenvolvimento./scripts/serve.sh
servirá o site de desenvolvimentoDê uma olhada no Justfile do projeto para mais scripts disponíveis.