再見 ElasticSearch,這個功能強大的輕量級搜索引擎真香!
晚上好呀,我是小金。剛剛肝完了這篇文章,求個在看和點贊鼓勵一下呀!
這篇文章建議大家一定要收藏!接下來要給大家推薦一個基於 Rust 寫搜索引擎,非常實用,搭建搜索服務的時候可以用上。
這個開源搜索引擎的名字叫做 MeiliSearch。根據官網介紹:
MeiliSearch 是一個強大、快速、開源、易於使用和部署的搜索引擎。搜索和索引都是高度可定製的。提供開箱即用的功能,如錯字容忍、過濾器和同義詞。
MeiliSearch 支持漢字(漢字)搜索、RESTful API 以及高度可定製。
相比於 ElasticSearch 來說,MeiliSearch 在小數據規模下更加方便易用。
瞭解過 Rust 這門編程語言的小夥伴應該知道 Rust 的性能非常好,和 C++ 想必幾乎沒有太大差別,僅僅是在需要額外安全保證的代碼會比 C++ 慢一些。並且,Rust 相比於 C 和 C ++ 在內存管理方面更加聰明,沒有內存泄露的風險。
MeiliSearch 的搜索速度非常快,通常只需要 50 毫秒以內,搜索即輸入的快感體驗!
-
項目地址:https://github.com/meilisearch/MeiliSearch
-
項目文檔:https://docs.meilisearch.com/
快速體驗
安裝
你可以使用 Docker 很方便的安裝 MeiliSearch。
docker run -p 7700:7700 -v "$(pwd)/data.ms:/data.ms" getmeili/meilisearch
Linux & Mac OS 的一鍵安裝和啓動的命令:
curl -L https://install.meilisearch.com | sh
./meilisearch
如果你本地有 Rust 環境的話,也可以直接克隆項目源碼運行。
git clone https://github.com/meilisearch/MeiliSearch.git
cd MeiliSearch
cargo run --release
運行成功的示意圖如下:
用瀏覽器訪問 http://127.0.0.1:7700/ 就可以看到 MeiliSearch 提供的 Web 搜索頁面。
添加文檔
可以使用 curl 命令添加文檔到指定的索引,索引是存儲文檔的地方,文檔代表的是真正的數據。
# 添加文檔到 movies 索引
curl \
-X POST 'http://127.0.0.1:7700/indexes/movies/documents' \
--data @movies.json
movies.json
(movies.json
的完整數據下載鏈接:https://docs.meilisearch.com/movies.json)
如上所示,要將文檔添加到 MeiliSearch,您必須提供:
-
數組形式的文檔 JSON objects。
-
一個索引名(UID)。
搜索
哦了!文檔已經有了。咱們現在能搜索。
curl 'http://127.0.0.1:7700/indexes/movies/search' \
--data '{ "q": "botman" }'
回覆結果:
{
"hits": [
{
"id": "29751",
"title": "Batman Unmasked: The Psychology of the Dark Knight",
"poster": "https://image.tmdb.org/t/p/w1280/jjHu128XLARc2k4cJrblAvZe0HE.jpg",
"overview": "Delve into the world of Batman and the vigilante justice tha",
"release_date": "2008-07-15"
},
{
"id": "471474",
"title": "Batman: Gotham by Gaslight",
"poster": "https://image.tmdb.org/t/p/w1280/7souLi5zqQCnpZVghaXv0Wowi0y.jpg",
"overview": "ve Victorian Age Gotham City, Batman begins his war on crime",
"release_date": "2018-01-12"
}
...
],
"offset": 0,
"limit": 20,
"processingTimeMs": 2,
"query": "botman"
}
常用編程語言集成
MeiliSearch 提供了 JS、Python、PHP、Ruby、Go、Rust 的開箱即用的客戶端。
比如說,對於 Python 項目來說,我們通過下面幾行代碼就可以添加文檔。
import meilisearch
import json
client = meilisearch.Client('http://127.0.0.1:7700')
json_file = open('movies.json')
movies = json.load(json_file)
client.index('movies').add_documents(movies)
通過下面一行代碼即可實現搜索:
client.index('movies').search('botman')
記得提前下載 meilisearch 的依賴。
pip3 install meilisearch
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/pELrnmkTYBEJHfHQ2S8APg