试试看!
Blogsearch是一种博客工具,可实现无需任何外部服务的搜索引擎。
这就像DocSearch,但对于博客。
从技术上讲,Blogsearch是纯客户端的全文搜索引擎,用于静态网站,由汇编为WebAssembly的SQLITE提供动力。
纯粹的客户端搜索
没有服务器可以维护。没有服务费用。
简单的。它是为博客和静态网站构建的。
支持流行的博客框架:
杰基
盖茨比
雨果
…以及任何静态网站!
SQLITE-WASM:使用WebAssembly在网上运行SQLite。该项目是为了博客搜索的需求。
工作流程由两个步骤组成: 1。您构建一个索引文件 | |
1。构建索引文件 | 2。启用搜索 |
索引文件
然后,您将生成的 | 您的网页应加载Blogsearch引擎。只有一个引擎可用:
使用<script>标签或JavaScript文件加载引擎。一旦引擎正确获取 |
在整个项目中,术语“索引”和“数据库”通常混合在一起,但在大多数情况下它们是相同的sqlite .db.wasm 。 |
Jekyll(Jekyll-Blogsearch)
Gatsby(Gatsby-Plugin-Blogsearch)
雨果(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,
},
} | |
您的索引构建工具可能具有该字段的特定工具选项(例如,Blogsearch-crawler的parser选项)。有关详细信息,请参见您的索引构建工具的文档。 |
< 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,我们可以轻松地使用一些SQL查询为Blogsearch编写插件,并使用不同的编程语言编写插件。
.db.wasm建议文件扩展名索引?这不是WebAssembly二进制文件。为什么不只是.db ?我试图将其制成.db但是有一个很大的问题:Web服务器未对索引文件进行GZIP压缩。流行的博客Web服务(尤其是GitHub页面)通常将.db文件作为application/octet-stream ,并且不会压缩文件。通过说谎,它是一个webAssembly二进制文件.wasm瓦斯,服务器将其识别为application/wasm并将其压缩。
压缩很重要,因为它大大减少了文件大小。我看到尺寸降低到1/3。
为了避免“但它在我的机器上起作用”问题,强烈建议将Docker用于构建任务。
尽管此存储库是每个子标记都有自己的构建脚本的单波库,但您可以轻松地在root Directory中运行任务。
| 如果您只想构建特定的子标记,请转到子目录并运行纱线命令。 |
所需的工具如下:
GNU MAKE(建议使用v4.2或更高版本,请警告MacOS用户!)
Docker
Docker-Compose
纱
尽管它是JS项目MakeFile的使用,因为它具有更大的配置,并且支持并行构建。
对于项目中使用的特定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,并在打字稿中对其进行了重新实现。
除此之外,该项目是麻省理工学院许可证。请参阅许可证