Моя запись в блоге: Инструменты поиска WebAssembly для статических сайтов.
Crane — это техническая демонстрация, вдохновленная Stork, в которой используется почти идентичная настройка файла конфигурации. Значит, его тоже пришлось назвать в честь птицы.
Я написал его, чтобы понять, как работают инструменты поиска WebAssembly. Вместо этого используйте Stork.
Кран — это две программы. Первая программа сканирует группу документов и строит эффективный индекс. 1 МБ текста и метаданных преобразуется в индекс размером 25 КБ (14 КБ в сжатом виде). Вторая программа представляет собой модуль Wasm, который отправляется в браузер вместе с небольшим количеством связующего кода JavaScript и индексом. Результатом является мгновенная поисковая система, которая помогает пользователям находить веб-страницы по мере их ввода.
Посетите демо-версию
Система полнотекстового поиска частично основана на коде из статьи в блоге Артема Крылысова. Давайте построим систему полнотекстового поиска.
Никаких усилий по сокращению двоичного файла Wasm не предпринималось. См. Уменьшение размера файлов Wasm.
Опишите файлы документов и их метаданные.
[ input ]
files = [
{
path = " docs/essays/essay01.txt " ,
url = " essays/essay01.txt " ,
title = " Introduction "
},
# etc.
]
[ output ]
filename = " dist/federalist.crane "
Передайте файл конфигурации в скрипт сборки. Вам понадобится свежий индекс всякий раз, когда ваши документы изменятся, но вам нужно будет собрать модуль Wasm только один раз.
./build-index.sh federalist.toml
./build-search.sh
Разместите файлы из /dist
на своем веб-сайте (например, wasm_exec.js
, crane.js
, crane.wasm
, federalist.crane
). И вперед!
const crane = new Crane ( "crane.wasm" , "federalist.crane" ) ;
await crane . load ( ) ;
const results = crane . query ( 'some keywords' ) ;
console . log ( results ) ;
См. демонстрацию в /docs
для ознакомления с базовым пользовательским интерфейсом.
./gh-pages.sh