Meilisearch 重構:v0.21 版本已加入討論
MeiliSearch v0.21 即將推出!看看我們新版本幕後發生的一些事情。

今天,我們正在發布 Meilisearch v0.21 的第一個候選版本 (RC)。這是邁向 Meilisearch 下一個版本的第一步,也是相當重要的一步,因為這將是我們自 3 月以來的第一個主要版本。
v0.21 的很大一部分對於大多數終端用戶來說將是相對不可見的:我們的核心團隊一直在努力重構 Meilisearch 的引擎,這項工作既耗時又對我們程式碼庫的長期健康至關重要。在這篇文章中,我想說明為什麼我們決定重構 Meilisearch、這如何影響我們的產品,以及我們接下來將走向何方。
我們不會討論 v0.20 和 v0.21 之間的所有變更——那是另一篇部落格文章的主題——但我們會觸及一些我們最期待的新功能。
為什麼需要重構?
當我們的核心團隊在不影響效能的情況下添加新功能變得越來越困難時,我們首先意識到有些問題。我們可以看到我們的程式碼變得越來越難以維護,這對於開源專案來說尤其令人擔憂:我們的社群是我們最大的盟友,如果我們想要讓我們的盟友感到滿意,保持程式碼乾淨、可讀且易於使用至關重要。我們顯然已經達到先前程式碼庫在效能和易用性方面所能提供的極限,因此我們決定是時候做出改變了。
我們做得如何?
我們有很多好消息——但是,與任何主要軟體版本一樣,我們沒有達到某些目標。
搜尋關聯性
v0.21.0 將提供使您的搜尋更具關聯性的新方法
- 您現在可以使用數字屬性作為篩選條件——想想產品的價格或書籍的發行日期之類的東西
- 這實際上是我們的用戶要求的:Algolia 的
words
條件的等效項現在在 Meilisearch 中可用! - 詞組搜尋:使用者現在可以透過將查詢詞組括在雙引號 (
"
) 中,強制引擎僅傳回完全符合的結果 - 現在可對陣列和物件值進行醒目提示
搜尋效能
使用 Meilisearch 搜尋龐大的資料集從未如此快速!使用包含大約 1.15 億個文檔的 1GB 資料集
- 傳回許多結果的查詢速度快了十倍以上:搜尋單個字母在 v0.21 中不到 50 毫秒,而在 v0.20 中為 2 秒
- 篩選數字時的速度增益相似:大多數搜尋在 v0.21 中不到 50 毫秒
索引
簡而言之;在大多數情況下,索引現在更快,但也存在例外。還有很大的改進空間!
首先,好消息:重構後的搜尋引擎,索引在全球範圍內更快。
不幸的是,我們注意到在 v0.21 中解析具有冗長描述值(想想一篇部落格文章或包含摘錄和摘要的科學文章列表)的資料集時,效能有所下降。這並非完全出乎意料:新的搜尋引擎需要更多計算,這意味著索引可能需要更多時間。這不是理想的情況,但我們寧願發布一些尚未完全優化的東西,也不願延遲 v0.21 以及它將引入的所有新功能。請放心,我們正在盡最大努力提高索引效能。
另一個壞消息:雖然我們已經朝著正確的方向邁出了重要一步,並全面減少了記憶體消耗,但由於記憶體使用過多導致 Meilisearch 有時崩潰的問題仍未解決。這是我們接下來的另一個優先事項。
是否有任何重大變更?
確實有!我們盡了最大努力避免重大變更,但當我們想要不斷改進並使我們的 API 更易於使用時,這並非總是可行。與 v.021 的重構相關的兩個最大變更是
- 參數
filters
和facetFilter
已被filter
取代。當篩選查詢結果時,兩個參數的功能幾乎相同,這增加了不必要的複雜性 - 我們認為使 Meilisearch 更直觀的幾項命名變更。這些都不會對最終使用者體驗產生任何影響。當我們正式發布 v0.21 時,將提供完整的清單
下一步是什麼?
一旦 v0.21 在未來三個月內正式發布,我們將恢復每月發布週期。我們特別期待開發 sortBy
和地理搜尋——這兩項功能是我們的用戶強烈要求的。我們清楚地聽到了你們的聲音!
如果您對 Meilisearch 即將推出的版本感到好奇,請隨時測試它並盡可能向我們提供回饋——我們依靠您來發現盡可能多的剩餘錯誤。您可以在 GitHub 上下載候選版本。
另外,提醒一句:我們不建議在生產環境中使用此 RC。我們相信 v0.21 RC1 看起來很不錯,但在準備好迎接聚光燈之前,仍有一些問題需要解決。
再次感謝您,並期待很快看到官方 v0.21.0 版本!