試試看!
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,並在打字稿中對其進行了重新實現。
除此之外,該項目是麻省理工學院許可證。請參閱許可證