您返回的搜尋結果是使用者想要的嗎?
了解如何透過自訂 Meilisearch 的比對策略來改善搜尋結果的相關性。

Meilisearch v0.29 已發布,並帶有一個新功能:比對策略自訂!
請考慮以下情況:使用者發出一個兩個單字的搜尋請求。當沒有足夠的文件來滿足要求的 limit
時,會發生什麼事?引擎應該只返回包含所有查詢詞的文件嗎?還是應該返回更多文件?如果是這樣,應該應用哪些標準來返回它們?
這就是比對策略的用武之地。當引擎沒有找到足夠的包含所有查詢詞的文件時,會使用比對策略來比對查詢詞。這不是一個容易做的決定,而且高度取決於使用者搜尋的資料類型。幸運的是,現在您可以選擇在搜尋時應用的策略 🎉
一點歷史
早在 2021 年,所有 v0.21 之前的版本都只會返回所有查詢詞都存在的文件。因此,如果我搜尋「Peter Parker」,它只會返回同時存在「peter」和「parker」這兩個詞的文件。這種比對策略稱為:all
,因為文件中必須存在所有查詢詞才會返回。
排名規則是 Meilisearch 用於確保相關結果的最重要功能之一。words 排名規則說明如下
結果會依比對的查詢詞數量由多到少排序。首先返回包含所有查詢詞的文件。
這條規則在我們的文件中存在已久,並附帶以下警告訊息
目前,返回的文件中必須存在所有查詢詞。因此,此規則尚未影響搜尋結果。
在 v0.21 中,words 規則開始運作,因此這個警告隨著所有查詢詞都必須存在的限制而消失。
從那時起,如果沒有足夠的文件包含所有查詢詞,Meilisearch 會一次移除一個詞,從查詢的結尾開始。因此,如果我搜尋「Peter Parker」,它會先返回同時存在這兩個詞的文件,然後返回只包含「Peter」的文件
這種比對策略稱為 last
,因為 Meilisearch 會移除查詢的最後一個詞。
事實證明,許多使用者對先前的比對行為相當滿意。遺憾的是,這種變更讓他們無法移轉到較新版本的 Meilisearch,進而無法從其許多改進中受益:搜尋時排序、地理搜尋、精細的 API 金鑰權限、多租戶等。他們不僅錯過了所有這些,而且還將錯過所有即將推出的超棒功能!😱
別慌!0.29 版本已經來拯救大家了!
關閉回饋迴圈
現在,您可以選擇在搜尋時要使用的比對策略。預設策略是 last
;如果您想使用 all
,您只需在搜尋主體中指定如下即可
curl -X POST 'https://127.0.0.1:7700/indexes/movies/search' -H 'Content-Type: application/json' --data-binary '{ "q": "peter parker", "matchingStrategy": "all" }'
這個功能自 2021 年 9 月開始開發,當時我們的產品經理 Guillaume Mourier 發起了 「比對查詢詞的原則」討論,以收集關於此問題的回饋。我們要感謝所有參與者撥冗分享他們的意見 🙏 沒有社群的支持,Meilisearch 就不會有今天的成就 🥰
使用這兩種策略的理由與使用案例一樣多。還不確定要選擇哪一個?我建立了一個演示,讓您可以測試這兩種策略,以協助您做出決定 😊
如需有關自訂比對策略的更深入資訊,您可以閱讀文件中 專門的章節。
演示
這個演示使用 電影資料集,該資料集用於 Meilisearch 的 快速入門指南,並廣泛用於 文件中。
我沒有對設定做任何變更。我只是索引了資料集,並保留了預設組態。純潔如雪 ❄️
執行搜尋時,您可以按一下按鈕來修改 matchingStrategy
搜尋參數,並查看根據所使用的策略而得出的不同結果。
在這裡試試看 👉 matching-strategy.meilisearch.com
如果您缺乏靈感或需要一些查詢詞的靈感,我列出了一些查詢想法,範圍從 2 個字到 10 個字的查詢
- 阿甘正傳
- 槓上大牌
- 重返夢幻島
- 開羅紫玫瑰
- 深夜小狗神秘事件
結論
我希望這個演示能幫助您更好地理解這兩種策略之間的差異及其對搜尋結果的影響。與往常一樣,您可以在 GitHub 上找到程式碼。
有很多方法可以微調搜尋結果的相關性。這只是眾多可用選項之一。我們知道每個專案都不同,並且有自己的需求;這就是您的回饋對我們如此重要的原因。我們努力讓您輕鬆自訂您的執行個體,以便您可以為您的使用者提供最佳的搜尋體驗。
請隨時查看我們的 產品儲存庫,並提出建議或加入現有的關於改進產品的討論。
如果您喜歡 Meilisearch 並想支持我們,在 GitHub 上給我們一個星星對我們來說意義重大 😇