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

讓我們來看看 Meilisearch 最新更新中的一些最重大的變更。我們將在本篇文章中回顧主要的變更,您也可以在 GitHub 上檢視完整更新日誌。
v1.4 現在已在Meilisearch Cloud上提供。一鍵升級您的 Meilisearch 實例,不會有停機時間。
新功能:自訂文字分隔符號
為了使字串資料可搜尋,Meilisearch 依賴分隔符號,因為它們用於將字串分割成語彙基元或單字。分隔符號的範例包括空白字元、句點或井號 (#)。它們在協助 Meilisearch 有效分割文字和提高搜尋相關性方面發揮關鍵作用。
Meilisearch 隨附預先定義的分隔符號列表。然而,這些分隔符號並不適用於所有使用案例。例如,在主題標籤搜尋中,井號不應被視為分隔符號,而是單字的一部分。
從 v1.4 開始,Meilisearch 允許您自訂分隔符號列表,以符合您的特定需求。
使用 SDK 或 API
將字元新增至分隔符號列表
若要在分隔符號列表中包含字元,請更新索引的分隔符號語彙基元設定
client.index('myIndex').updateSeparatorTokens(['§'])
此請求會將章節符號字元 (`§`) 的編碼版本新增至分隔符號語彙基元列表。
從分隔符號列表中移除字元
若要從分隔符號列表中移除一或多個字元,請更新索引的非分隔符號語彙基元設定
client.index('myIndex').updateNonSeparatorTokens(['@', '#', '&'])
使用 Meilisearch Cloud
在Meilisearch Cloud上,您可以從索引的設定中設定分隔符號語彙基元。這兩個欄位都接受 JSON 格式。若要包含分隔符號,請將它們新增至「分隔符號」欄位。若要排除某些字元作為分隔符號,請將它們列在「非分隔符號」下。
新功能:自訂字典
現在,您可以新增自訂單字字典,以改善 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。