프로젝트 업데이트 : 저는 Stork와의 작업을 마무리하고 있습니다. 지난 몇 년 동안 Stork를 즐겨 사용해 주신 모든 분들께 감사드립니다! |
정적 사이트용으로 제작된 엄청나게 빠른 웹 검색입니다.
Stork는 웹에서 아름답고 빠르며 정확한 전체 텍스트 검색 인터페이스를 만들기 위한 라이브러리입니다.
두 부분으로 제공됩니다. 첫째, 콘텐츠를 색인화하고 웹 서버에 업로드할 수 있는 검색 색인 파일을 생성하는 명령줄 도구 입니다. 둘째, 해당 인덱스 파일을 사용하여 사용자가 입력하는 즉시 최적의 검색 결과를 표시하는 대화형 검색 인터페이스를 구축하는 Javascript 라이브러리 입니다.
Stork는 Rust로 구축되었으며 Javascript 라이브러리는 뒤에서 WebAssembly를 사용합니다. 시작하기 쉽고 필요에 맞게 사용자 정의하기가 더욱 쉽습니다. Jamstack 사이트와 개인 블로그에 적합하지만 대화형 검색창이 필요한 모든 곳에서 사용할 수 있습니다.
현재 James Little이 개발 중
연방주의자 논문의 텍스트 내에서 검색할 수 있는 검색창을 온라인에 설치해 봅시다.
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 >
황새는 페이지에 포함된 기존 HTML에 연결됩니다. 각 Stork 인스턴스에는 입력 후크와 결과 목록이 있어야 합니다. 래퍼는 선택 사항이지만 이 두 요소는 래퍼에 배치되어야 합니다.
입력 후크에는 data-stork="federalist"
속성이 있어야 합니다. 여기서 federalist
해당 검색 인스턴스를 등록하는 데 사용하는 이름입니다. (이 방법을 사용하면 페이지에 여러 개의 독립적인 검색 상자를 가질 수 있으며 모두 서로 다른 인스턴스를 가리킬 수 있습니다.) federalist
필요는 없습니다. 원하는 대로 변경할 수 있습니다.
결과 목록은 data-stork="federalist-results"
속성이 있는 빈 <div>
태그여야 합니다. 여기서도 federalist
원하는 대로 변경할 수 있습니다.
위 예제의 클래스( stork-input
, stork-output
)는 테마용입니다. 대부분의 Stork 테마는 위의 형식을 가정합니다. 테마 문서에 뭔가 다른 것이 필요한지 알려줄 것입니다. 또한 스타일과 클래스 이름을 원하는 대로 자신만의 테마를 디자인할 수도 있습니다.
Stork CDN에서 로드하거나 직접 호스팅할 수 있는 stork.js
포함해야 합니다. 그러면 Stork WebAssembly blob이 로드되고 Stork 개체가 생성되어 인덱스를 등록하고 구성할 수 있습니다.
그런 다음 최소한 하나의 인덱스를 등록해야 합니다.
stork . register ( "federalist" , "http://files.stork-search.net/federalist.st" ) ;
귀하가 구축한 검색 색인은 공개 URL이 있는 어딘가에 저장되어야 합니다. 등록하려면
이는 federalist
라는 이름으로 http://files.stork-search.net/federalist.st
에 저장된 색인을 등록합니다. HTML의 data-stork
속성은 이 이름에 연결됩니다.
마지막으로 검색창이 색인 및 페이지와 상호 작용하는 방식에 대한 몇 가지 구성 옵션을 설정할 수 있습니다.
아마도 당신은 연방당 신문을 검색할 수 있는 인터페이스를 자신의 웹사이트에 추가하고 싶지 않을 것입니다. 검색창을 나만의 것으로 만드는 방법은 다음과 같습니다.
인덱스를 구축하려면 컴퓨터에 Stork 실행 파일이 필요합니다. 이 실행 파일은 최신 Github 릴리스에서 설치하거나 Rust 툴체인이 설치되어 있는 경우 cargo install stork-search --locked
실행하여 설치할 수 있습니다.
검색 색인은 문서 구조를 기반으로 합니다. Stork에 디스크에 있는 문서 목록을 제공하고 해당 문서에 대한 일부 메타데이터를 포함하면 Stork는 해당 문서의 내용을 기반으로 검색 색인을 구축합니다.
먼저, 무엇보다도 해당 파일 목록을 설명하는 구성 파일이 필요합니다.
[ 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 " }
]
이 TOML 파일은 모든 문서의 기본 디렉터리를 설명하고 해당 문서의 제목과 함께 해당 문서를 찾을 수 있는 웹 URL과 함께 각 문서를 나열합니다.
여기에서 다음을 실행하여 검색 색인을 작성할 수 있습니다.
$ stork build --input federalist.toml --output federalist.st
federalist.st
에 새 파일이 생성됩니다. 동일한 명령줄 도구를 사용하여 검색할 수 있습니다.
$ stork search --index federalist.st --query " liberty "
웹사이트에 Stork 검색 인터페이스를 포함하려면 먼저 색인 파일을 웹 서버에 업로드한 다음 해당 URL을 웹페이지 자바스크립트의 stork.register()
함수에 전달하세요.
프로젝트 웹사이트(https://stork-search.net)에서 더 많은 문서를 읽고 사용자 정의에 대해 자세히 알아볼 수 있습니다.
Stork를 빌드하려면 다음이 필요합니다.
저장소는 약간의 수정을 거쳐 일반적인 Cargo 작업 공간처럼 구성됩니다.
stork-*
디렉터리에는 Rust 패키지가 들어 있습니다. stork-cli
및 stork-wasm
최상위 패키지입니다. 다른 모든 것은 종속성입니다.js
Javascript 소스 코드가 들어 있습니다.test-assets
Stork의 기능 테스트에 필요한 바이너리 자산을 보유합니다.local-dev
로컬 개발에 사용되는 테스트 웹페이지를 빌드하고 실행하는 데 필요한 구성 파일, 말뭉치, 인덱스 파일이 들어 있습니다.Rust 진입점 또는 Javascript 진입점을 사용하여 프로젝트를 빌드할 수 있습니다(빌드 지침은 아래에 나열되어 있음). 프로젝트를 빌드한 후에는 세 개의 디렉터리가 더 표시됩니다.
target
출력 바이너리 빌드 아티팩트를 보유합니다.pkg
중간 WASM 빌드 아티팩트를 보유합니다.dist
웹용 최종 빌드 아티팩트를 보유합니다. 최종 Stork 빌드 아티팩트를 추출하는 데 관심이 있는 경우 yarn build
사용하여 프로젝트를 빌드한 후 다음 파일을 추출할 수 있습니다.
/target/release/stork
/dist/stork.js
/dist/stork.wasm
just build-indexer
인덱서 바이너리를 target/release/stork
로 빌드할 것입니다.just build-js
WASM 바이너리와 Javascript 브리징 코드를 dist
디렉토리에 빌드합니다.just build-federalist-index
프로젝트 전체에서 참조되는 Federalist.st 인덱스 파일을 빌드합니다. local-dev/test-indexes/federalist.st
로 출력됩니다.just build-indexer-dev
인덱서 바이너리를 빌드할 것입니다.cargo run -- <CLI OPTIONS>
인덱서 바이너리를 실행합니다.just build-dev-site
WASM 및 Javascript 브리지 코드를 빌드하고, Federalist.st 인덱스를 빌드하고, 개발 사이트를 패키징합니다../scripts/serve.sh
개발 사이트를 제공합니다.더 많은 사용 가능한 스크립트를 보려면 프로젝트의 Justfile을 살펴보세요.