AI 驅動的混合搜尋正在封閉測試中。 加入候補名單 以搶先體驗!

前往首頁Meilisearch 的標誌
返回文章
2022 年 10 月 3 日

v0.29 版本的新功能

這個月的版本帶來了一個期待已久的新功能:匹配策略自訂。它也帶來了許多關於索引速度、篩選器和金鑰管理的改進。

Carolina Ferreira
Carolina FerreiraMeilisearch 的開發倡導者@CarolainFG
What’s new in v0.29

本文探討了 Meilisearch 最新版本中的一些主要變更。如需更多詳細資訊,請閱讀 GitHub 上的完整變更日誌

新功能:匹配策略

v0.29 引入了一個新的搜尋參數:matchingStrategy。此參數可讓您在搜尋時定義 Meilisearch 應如何匹配查詢詞

  • last:首先返回包含所有查詢詞的文件。然後,透過減少匹配中出現的查詢詞數量來檢索其他結果:Meilisearch 將一次刪除一個查詢詞,從查詢的末尾開始,並將任何新的匹配項包含在結果列表中。自 v0.21 以來,這一直是預設行為,並且將保持預設策略。
  • all:僅返回包含所有查詢詞的文件。

範例

curl \
  -X POST '<https://127.0.0.1:7700/indexes/movies/search>' \
  -H 'Content-Type: application/json' \
  --data-binary '{ "q": "american ninja", "matchingStrategy": "all" }'

透過上述請求,Meilisearch 將僅返回同時包含「american」和「ninja」的文件。

我們希望這個新功能能鼓勵那些仍在使用 v0.20(預設使用 all 匹配策略的最後一個官方 Meilisearch 版本)的人升級到我們的最新版本,並從那時起引入的新功能中受益:排序地理搜尋細緻的 API 金鑰權限等等!如果您仍在 v0.20 上,並且認為您暫時不會升級,我們很樂意知道是什麼在阻止您。

您可以使用匹配策略示範來測試此功能,並在專門的部落格文章中了解更多資訊。改進:索引效能

我們加快了索引速度,特別是針對以下操作

  • 刻面索引:我們修改了演算法,以提高可篩選屬性的索引速度
  • 文件刪除和更新
  • 我們引入了軟刪除。這是一種技術,其中使用旗標將資料標記為已刪除,使其無法被所有使用者存取,而實際上不會從資料庫中刪除。文件會在稍後刪除,以免佔用裝置上過多的空間。因此,刪除磁碟上記錄所需的時間會延後,並且不會延遲索引程序。
  • 重新索引時,Meilisearch 現在會偵測是否存在完全相同版本的文件,如果存在,則不會再次建立索引

行為變更:自動批次處理

在 v0.26 中,我們引入了一個實驗性功能:自動批次處理。啟用後,自動批次處理會自動合併連續的文件新增請求,從而顯著加快索引程序。

我們很高興地宣布自動批次處理現在是預設索引行為,不再是實驗性功能🥳

這表示您不再需要使用 **--enable-auto-batching** CLI 旗標來啟用它。使用 --enable-auto-batching 現在會擲回以下錯誤

error: Found argument '--enable-auto-batching' which wasn't expected, or isn't valid in this context

	Did you mean '--disable-auto-batching'?

	If you tried to supply `--enable-auto-batching` as a value rather than a flag, use `-- --enable-auto-batching`

USAGE:
    meilisearch --disable-auto-batching

以下自動批次處理自訂選項也已移除,如果使用將會擲回錯誤,因此請確保您的應用程式在升級到 v0.29 之前未使用它們

  • --debounce-duration-sec
  • --max-batch-size
  • --max-documents-per-batch

如果您尚未啟用自動批次處理功能,您無需執行任何操作,只需享受提高的索引速度即可 🏎️

🧐 您可能已在上面的錯誤訊息中注意到:如果由於某些原因您不希望 Meilisearch 自動批次處理請求,則可以使用新的 CLI 旗標來停用此功能:--disable-auto-batching

我們不斷致力於改進我們的搜尋引擎,您的意見回饋至關重要。如果您在文件索引速度方面遇到任何問題,如果您可以在此討論中告知我們,我們將非常感激。

改進:篩選器

我們新增了兩個新的篩選器運算子:INEXISTS

  • IN 運算子會選取指定欄位包含至少一個給定值的所有文件
  • EXISTS 運算子會檢查欄位是否存在。請注意,具有空白或空值的欄位仍然計為存在

假設有以下書籍資料集

[
  { "id": 1, "title": "Pride and Prejudice", "genres": ["romance"] },
  { "id": 2, "title": "Le Petit Prince", "genres": [] },
  { "id": 3, "title": "Alice In Wonderland" },
  { "id": 4, "title": "The Hobbit", "genres": ["adventure", "fantasy"] },
  { "id": 5, "title": "A Game of Thrones", "genres": ["fantasy"] },
]

表達式 genres IN [fantasy, adventure] 將會傳回文件 45

表達式 genres EXISTS 將會傳回文件 1245

這兩個運算子都可以與 NOT (!=) 運算子組合使用。

行為變更:!= (NOT) 篩選器運算子

!= (NOT) 篩選器運算子會傳回不滿足條件的文件。

考慮以下文件

{ "id": 1, "product": "T-shirt", "price": 20 }
{ "id": 2, "product": "T-shirt" }
{ "id": 3, "product": "T-shirt", "price": 30 }

NOT price = 20 應傳回 price 屬性不等於 20 的所有文件。

在 v0.29 中,!= (NOT) 篩選器會比對缺少指定屬性的文件。在上面的範例中,這表示 Meilisearch 會傳回文件 23

在 v0.29 之前,Meilisearch 不會包含缺少 price 屬性的結果。在上面的範例中,v0.28 只會傳回文件 3

您可以使用新的 EXISTS 運算子與 != (NOT) 運算子來確保篩選器只傳回包含指定屬性的文件:price EXISTS AND price != 20 只會傳回文件 3

改進:金鑰管理

在管理金鑰時,在 actions 陣列中使用 * 萬用字元會提供對所有端點的存取權

{
      "name": "Default Admin API Key",
      "description": "Use it for anything that is not a search operation. Caution! Do not expose it on a public frontend",
      "key": "380689dd379232519a54d15935750cc7625620a2ea2fc06907cb40ba5b421b6f",
      "uid": "20f7e4c4-612c-4dd1-b783-7934cc038213",
      "actions": ["*"],
      "indexes": ["*"],
      "expiresAt": null,
      "createdAt": "2021-08-11T10:00:00Z",
      "updatedAt": "2021-08-11T10:00:00Z"
 }

現在,由於我們的貢獻者,它也可以作為萬用字元,表示單一路線的所有端點 🙌

您無需列出每個端點,而是可以在所需的路線中附加 * 字元。例如,documents.* 授權存取所有與文件相關的端點。

改進:泰語支援

我們親愛的貢獻者 @aFluffyHotdog 引入了泰語的最佳化支援 🥳

我們一直在尋找使 Meilisearch 的語言支援變得更好的方法。我們從母語人士那裡獲得的意見回饋越多,我們就越容易了解如何提高這些語言的效能和搜尋相關性。

想要幫助我們支援您的語言嗎?貢獻一份力量!如果您需要指導或協助,請隨時聯繫我們;我們期待與您合作!

貢獻者

如果沒有社群的支持,Meilisearch 不會像今天一樣。你們真的非常棒,我們非常感謝你們為 Meilisearch 付出的所有努力、建議、評論和時間。這個月,我們要特別感謝@evpeople@Mcdostone@pavo-tusker@phdavis1027@ryanrussell@VasiliySoldatkinMeilisearch 的幫助;感謝 @GraDKhMilli 的幫助;以及感謝 @aFluffyHotdog@matthias-wright@mosuka 對我們的斷詞器 Charabia 的幫助。

這就是全部啦!記得查看更新日誌以了解完整的發佈說明,我們下次見!

Meilisearch 1.12

Meilisearch 1.12

Meilisearch 1.12 帶來了顯著的索引速度提升,並引入了新的 API 以禁用前綴搜尋和分面搜尋,以及檢索任務批次。

Laurent Cazanove
Laurent Cazanove2024年12月23日
Meilisearch Q4 2024 release wrap-up

Meilisearch 2024 年第四季度發布總結

Meilisearch 第四季度發布包括更快的搜尋速度、對 UI 中設定的更多控制以及一個新的區域。

Maya Shin
Maya Shin2024年11月27日
Meilisearch 1.11

Meilisearch 1.11

Meilisearch 1.11 透過關鍵的改進(包括二元量化)推進了 AI 驅動搜尋的穩定性。此版本還根據使用者回饋增強了聯合搜尋功能。

Carolina Ferreira
Carolina Ferreira2024年10月29日