背景
由于公司項目需要用到全文搜尋這個功能,而且要求輕量級,不能用複雜的ES,于是在網上搜尋資料。一次偶然機會,發現了一個名字特别顯眼的搜尋引擎——MeiliSearch!
MeiLi(美麗),這麼直白用拼音命名項目,這越發激起了小編的好奇心,好了,帶着滿腦的疑問,我們來研究一下這個美麗的搜尋引擎吧!
概要
MeiliSearch,顧名思義,美麗的搜尋引擎,不僅美麗,其上手速度和小規模資料量下的體驗也比 ElasticSearch 更加出色。
在大型同性交友平台 github 上面查了一下這個項目,發現是近2年火起來的,已經有将近30K+Star了,非常優秀!據說是Meili是在挪威神話中的神,指 “可愛的人”,是托爾的兄弟,果然中華文明博大精深,都流傳到國外了。
MeiliSearch 是一個強大、快速、開源、易于使用和部署的搜尋引擎。搜尋和索引都是高度可定制的,提供開箱即用的功能,如錯字容忍、過濾器和同義詞。
最最最重要的是,它是支援中文搜尋的,對于國人真的是太友好了。它編寫的語言是 RUST,雖然小編沒學過 RUST,但知道 RUST 性能非常好,可以媲美C++,那應用在搜尋引擎這塊,也是可以起飛了。
估計大家都等着急了,接下來就來體驗一下這個輕量美麗的搜尋引擎。
安裝方式
MeiliSearch 的安裝方式有很多,支援 docker 容器安裝、二進制方式安裝,也支援 RUST 環境下克隆項目源碼運作。
這裡我們使用二進制方式安裝,為了快速體驗,直接使用簡單粗暴的 docker 方案安裝。
docker run -itd -p 7700:7700 -v /home/meilisearch/data:/meili_data getmeili/meilisearch
如上圖所示,已經成功運作了一個 MeiLiSearch 服務。
MeiLiSearch 服務自身提供可視化的 WEB 搜尋頁面,我們可以通路一下這個頁面來驗證服務是否運作
如上圖所示,我們可以在浏覽器上看到搜尋界面,由于還沒有建立索引和文檔,是以是沒有資料的。
使用
它的資料存儲:Index > Document ,和 ES 十分相似,但又簡單了許多。
由于任何搜尋引擎都需要先添加索引,我們先添加索引。
添加索引
我們使用簡單的 CURL 建立索引。
curl \
-X POST 'http://localhost:7700/indexes' \
-H 'Content-Type: application/json' \
--data-binary '{
"uid": "movies",
"primaryKey": "id"
}'
添加文檔
索引是存儲文檔的地方,文檔代表的是真正的資料。
我們同樣使用CURL批量建立文檔
# 添加文檔到 movies 索引
curl \
-X POST 'http://localhost:7700/indexes/movies/documents' \
-H 'Content-Type: application/json' \
--data-binary @movies.json
# movies.json為測試資料,具體資料可到meilisearch官網下載下傳
這時,在界面上可以看到我們之前添加的資料。
測試搜尋
嘗試搜尋一些關鍵詞,可以看出,我們搜尋就立即傳回結果,并且帶有高亮顯示,速度非常快!
另外,MeiliSearch 還提供 PHP、JAVA、Python 等語言的 SDK,直接無縫對接,開箱即用。
總結
對于中小型企業,特别是資料量不大的,都可以使用 MeiliSearch 這款搜尋引擎,輕量級安裝部署、搜尋速度快到極緻,名副其實的輕量級且美麗。
以上就是本期分享,如果大家對此感興趣,歡迎各位關注、留言,大家的支援就是我的動力!