Попробуйте!
BlogSearch - это инструмент для ведения блога, который позволяет поисковой системе без каких -либо внешних служб.
Это как DocSearch, но для блогов.
Более технически, BlogSearch является чистой клиентской, полнотекстовой поисковой системой для статических веб-сайтов, включенной в SQLite, составленную в Webassembly.
Чисто клиентский поиск
Нет сервера для обслуживания. Нет стоимости обслуживания.
Легкий. Он создан для блогов и статических веб -сайтов.
Поддерживает популярные фреймворки в блоге:
Джекилл
Гэтсби
Гюго
... и любые статические сайты!
SQLite-Wasm: запустите SQLite в Интернете, используя WebAssembly. Этот проект создан для потребностей BlogSearch.
Рабочий процесс состоит из двух шагов: 1. Вы создаете индексный файл | |
1. Создайте индексный файл | 2. Включить поиск |
Индексный файл
Затем вы копируете сгенерированный | Ваша веб -страница должна загрузить двигатель BlogSearch. Доступен только один двигатель:
Загрузите двигатель, используя <Script> тег или в файл JavaScript. После того, как двигатель правильно принесет файл |
На протяжении всего проекта термины «индекс» и «база данных» часто смешаны, но они означают один и тот же файл sqlite .db.wasm в большинстве случаев. |
Jekyll (Jekyll-Blogsearch)
Gatsby (Gatsby-Plugin-Blogsearch)
Hugo (Blogsearch-Crawler)
Общий гусениц (Blogsearch-Crawler)
Пользователи должны настроить инструмент индекса построения для сбора значения полей для правильной работы поисковой системы.
Индексный инструмент строительства должен собирать следующие поля по умолчанию для каждой посты:
title : Название поста.
body : содержание поста.
url : URL -ссылка на сообщение.
categories : разделенный запятой ( , ) список категорий, к которым принадлежит пост.
tags : разделенный запятой ( , ) список тегов, которые есть в сообщении.
Пользователи могут настроить все поля, используя следующие свойства:
| Пример | Результат |
|---|---|
| |
{
...other field options...
categories: {
+ disabled: true,
},
} | |
В следующем примере размер индексного файла | |
{
...other field options...
body: {
+ hasContent: false,
},
} | |
| |
{
...other field options...
url: {
+ indexed: false,
},
} | |
Ваш инструмент для построения индекса может иметь специфичные для инструмента варианты для этой области (например, вариант parser для BlogSearch-Crawler). Подробнее см. Документацию вашего инструмента построения индекса. |
< link rel =" stylesheet " href =" https://cdn.jsdelivr.net/npm/[email protected]/dist/basic.css " />
< script src =" https://cdn.jsdelivr.net/npm/[email protected]/dist/blogsearch.umd.js " > </ script >
< script src =" https://cdn.jsdelivr.net/npm/[email protected]/dist/worker.umd.js " > </ script >
< input id =" blogsearch_input_element " type =" search " placeholder =" Search Text " class =" form-control " />
< script >
blogsearch ( {
dbPath : 'your_index_file.db.wasm' ,
inputSelector : '#blogsearch_input_element' ,
} ) ;
</ script >Для получения дополнительной информации и опций перейдите в подкаталог BlogSearch.
Поисковая система в основном представляет собой SQLite с расширением FTS5, составленной в WebAssembly. SQLite FTS5 предлагает встроенный алгоритм ранжирования BM25 для функциональности поиска. Поскольку SQLite является наиболее портативным двигателем базы данных, вы также можете открыть любые файлы базы данных SQLite в Интернете! Благодаря SQLite, мы можем легко написать плагины для BlogSearch с несколькими запросами SQL на разных языках программирования.
.db.wasm - это рекомендуемый индекс расширения файла? Это не двоичный файл webassembly. Почему бы не только .db ? Я попытался сделать это .db , но есть большая проблема: файл индекса не сжата Gzip веб-сервером. Популярные веб-сервисы блога (особенно страницы Github) обычно обслуживают файл .db в качестве application/octet-stream и не сжимают файл. Ложь, что это двоичный файл webassembly .wasm , серверы распознают его как application/wasm и отправляют его сжатый.
Сжатие важно, потому что оно значительно уменьшает размер файла. Я увидел, что размер уменьшен до 1/3.
Чтобы избежать «но это работает на моей машине», настоятельно рекомендуется использовать Docker для строительства задач.
Хотя этот репозиторий является монорепо, где у каждого подпроекта есть собственные сценарии сборки, вы можете легко выполнять задачи в корневом каталоге.
| Если вы хотите построить только конкретный субпроект, перейдите в подкаталог и запустите команды пряжи. |
Требуемые инструменты являются следующими:
GNU Make (v4.2 или выше рекомендуется, будьте осторожны для пользователей MacOS!)
докер
докер-состав
пряжа
Хотя это используется Makefile Project JS, потому что он гораздо более конфигурируется и поддерживает здание параллельно.
Для конкретных версий Nodejs, используемых в проекте, пожалуйста, посмотрите на Dockerfile.
# Or yarn install, without docker
make install-in-docker # Or yarn install, without docker
make lib-in-dockermake start-in-docker
# You can access the demo page via 0.0.0.0:9000 # Or make test, without docker
make test-in-docker
# Run it in parallel
make test-in-docker -j4 --output-sync=target| Это займет много времени! (~ 30 мятетов) |
# It is highly recommended to use docker here
make examples-in-docker && make demo-in-docker| Это займет много времени! (~ 30 мятетов) |
# Or make all, without docker
make all-in-docker
# Or
# Parallel builds. This reduces the build time almost an half on my machine.
make all-in-docker -j4 --output-sync=targetmake clean
# Then run any commands above make bash-in-dockerЭтот проект вдохновлен DocSearch и имеет его переосмысление в TypeScript.
Кроме этого, проект является лицензией MIT. Смотрите лицензию