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

前往首頁Meilisearch 的標誌
返回文章
2023 年 9 月 26 日

v1.4 版本的新功能有哪些?

Meilisearch v1.4 引入了配置自訂文字分隔符號和使用者定義字典的功能。

Carolina Ferreira
Carolina FerreiraMeilisearch 開發者倡導者@CarolainFG
What's new in v1.4?

讓我們來看看 Meilisearch 最新更新中的一些最重大的變更。我們將在本篇文章中回顧主要的變更,您也可以在 GitHub 上檢視完整更新日誌

v1.4 現在已在Meilisearch Cloud上提供。一鍵升級您的 Meilisearch 實例,不會有停機時間。

新功能:自訂文字分隔符號


為了使字串資料可搜尋,Meilisearch 依賴分隔符號,因為它們用於將字串分割成語彙基元或單字。分隔符號的範例包括空白字元、句點或井號 (#)。它們在協助 Meilisearch 有效分割文字和提高搜尋相關性方面發揮關鍵作用。

Meilisearch 隨附預先定義的分隔符號列表。然而,這些分隔符號並不適用於所有使用案例。例如,在主題標籤搜尋中,井號不應被視為分隔符號,而是單字的一部分。

從 v1.4 開始,Meilisearch 允許您自訂分隔符號列表,以符合您的特定需求。

使用 SDK 或 API

本節顯示 JavaScript 中的程式碼範例。請查看我們的官方 SDKAPI 參考文件,以取得更多範例。

將字元新增至分隔符號列表

若要在分隔符號列表中包含字元,請更新索引的分隔符號語彙基元設定

client.index('myIndex').updateSeparatorTokens(['§'])

此請求會將章節符號字元 (`§`) 的編碼版本新增至分隔符號語彙基元列表。

從分隔符號列表中移除字元

若要從分隔符號列表中移除一或多個字元,請更新索引的非分隔符號語彙基元設定

client.index('myIndex').updateNonSeparatorTokens(['@', '#', '&'])

使用 Meilisearch Cloud

Meilisearch Cloud上,您可以從索引的設定中設定分隔符號語彙基元。這兩個欄位都接受 JSON 格式。若要包含分隔符號,請將它們新增至「分隔符號」欄位。若要排除某些字元作為分隔符號,請將它們列在「非分隔符號」下。

Screenshot of Meilisearch Cloud UI showcasing the 'separator settings' section. It features two fields: one for listing separators and another for listing non-separators.

新功能:自訂字典

本節顯示 JavaScript 中的程式碼範例。請查看我們的官方 SDKAPI 參考文件,以取得更多範例。

現在,您可以新增自訂單字字典,以改善 Meilisearch 對特定單字的分割。這在處理領域特定的術語(如「Node.js」)或專有名詞(如「E. E. Cummings」)時特別有用。

若要將單字新增至字典,請更新索引的字典設定

client.index('myIndex').updateDictionary(['e. e.', 'e.e.', 'e e'])

Meilisearch Cloud上,您可以透過在索引的設定中提供 JSON 陣列來設定自訂字典。您也可以上傳 JSON 檔案作為字典。

將自訂字典與停止詞和同義詞一起使用

自訂字典的引入是現有功能(如停止詞同義詞)的強大輔助工具。它們共同協同作用,以提高搜尋結果的相關性。

讓我們考慮一個文學資料庫,其中作者的姓名可能會以各種形式或縮寫出現。這會導致搜尋結果分散,讓使用者難以找到特定作者的作品。例如,以不同的方式搜尋 E. E. Cummings 的作品。使用自訂字典功能以及同義詞可以標準化這些名稱的變體,從而提高搜尋結果的相關性。

以下是結合使用同義詞和自訂字典的索引設定範例,可解決此情況

{
"dictionary": ["E. E.", "E.E.", "E E"],
"synonyms": {
    "E. E.": [ "E.E.", "E E", "Edward Estlin"],
    "E.E.": ["E. E.", "E E", "Edward Estlin"],
    "E E": ["E. E.", "E.E.", "Edward Estlin"],
    "Edward Estlin": ["E. E.", "E.E.", "E E"]
}

重大錯誤修復:改善使用反斜線的篩選

在 v1.4 中,我們解決了使用者在使用 `filter` 搜尋參數運算式末尾使用反斜線 (\) 時遇到的長期錯誤。

讓我們考慮以下文件

[
  {
    "id": 1,
    "path": "my\test\path"
  },
  {
    "id": 2,
    "path": "my\test\path\"
  }
]

注意:範例中的雙反斜線用於 JSON 跳脫。

在 v1.4.0 之前,嘗試使用篩選條件 `path = "my\\test\\path\\"` 或 `path = "my\\test\\path\\\"` 在第二個文件上進行篩選會導致錯誤。

現在,您可以使用任何包含反斜線的篩選運算式。只需確保在篩選條件中跳脫每個 `\` 字元即可。

使用我們的範例,若要成功篩選第二個文件,篩選條件應寫為:`path = "my\\\\test\\\\path\\\\"`。

⚠️ 警告:如果您是從 v1.3.X 或更早版本升級,並且先前在篩選條件中使用過反斜線,請注意在 v1.4.0 中,第一個文件的正確篩選條件應為 `path = "my\\\\test\\\\path"`。

應用了兩層跳脫:第一層是針對 JSON 進行跳脫,然後是針對 Meilisearch 篩選條件進行跳脫。Meilisearch 會將 `\\\\` 還原為 `\\`,而 JSON 剖析將產生單個 `\`。

請考慮使用程式設計語言的內建方法來處理反斜線: - PHP:addslashes() 函數- JavaScript:雖然 JS 沒有用於新增斜線的特定方法。您可以使用replace 方法,如StackOverflow上建議的。

貢獻者

我們非常感謝所有參與此版本的社群成員。我們要感謝:@dogukanakkaya@JannisK89@vivek-26 對 Meilisearch 的協助。我們要特別感謝 mmachatschek 對反斜線錯誤的協助和參與。

結論

以上就是 v1.4 的內容!請記得查看更新日誌以取得完整的發行說明,我們下次見!

您可以訂閱我們的電子報,以隨時掌握最新資訊。若要深入了解 Meilisearch 的未來並協助塑造它,請查看我們的產品藍圖,並參與我們的產品討論

如有其他問題,請加入我們的開發者社群 Discord

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 透過包括二元量化在內的關鍵改進,推進了人工智慧驅動搜尋的穩定性。此版本還根據使用者回饋增強了聯合搜尋功能。

Carolina Ferreira
Carolina Ferreira2024年10月29日