Meilisearch 是一個以 Rust 開發的全文搜尋引擎 (full-text search engine),主打簡單好用、搜尋和回應速度都很快,另外預設就支援多國語言,不需要特別調整設定或安裝擴充套件即可使用。
覺得有趣,去年拿來當作 site project 的一部分研究。當索引檔大小漸漸增加,也開始發現一些問題。
觀察了一下運作的狀況:
- 索引大小約 1 GB 時,使用 1 thread + 1 GB RAM,新增資料約 3 秒
- 索引大小在 5 GB 時,使用 4 thread + 2 GB RAM,新增資料至少 15 秒起跳
在索引檔大小增加以後,增加 threading 和 RAM 對執行效率並沒有顯著的效果,瓶頸看起來是卡在 disk I/O。
手上 VPS 觀察到的 I/O 最大約 200 MB/s,應該就是極限了:
Meilisearch 並不是不能用,這邊還是簡單列幾個優缺點。
優點:
- 就一個執行檔而已,不用下參數就可以正常運作
- 走 RESTful API,curl 就可以操作。因為簡單,所以幾乎這種程式語言已都有 API 可用。
- document based data,不需要事先定義 field / column (我覺得這也可以算是一個缺點)
- 隨時調整 searchable / sortable / displayable doument field
- 內建 dump & snapshot
缺點:
- 覺得算是一個迭代速度蠻快的專案,所以文件沒有很完整 (或說明不好找)
- 透過 master key 和 API key 來限制使用、操作,略顯不足
- 部份覺得蠻重要的功能尚在開發中,例如透過 rank 來排序之類的
- 查詢功能、查詢結果列表有一些限制,但可以透過其他功能來避免 (known limitations)
Meilisearch 的社群蠻活躍的,歡迎大家參與討論 -> Meilisearch Roadmap