容錯計算
容錯功能可幫助使用者即使在搜尋查詢中包含拼寫錯誤或錯字時,也能找到相關的結果,例如,輸入 phnoe
而不是 phone
。您可以針對每個索引設定容錯功能。
Meilisearch 使用前綴Levenshtein 演算法來判斷文件中某個詞是否可能是查詢詞的匹配項。
上面引用的錯字數量大致相當於 Levenshtein 距離。兩個詞 M 和 P 之間的 Levenshtein 距離可以看作是透過對 M 執行以下基本運算,將 M 轉換為 P 的「最小成本」:
- 替換字元(例如,
kitten
→sitten
) - 插入字元(例如,
siting
→sitting
) - 刪除字元(例如,
saturday
→satuday
)
預設情況下,Meilisearch 使用以下規則來匹配文件。請注意,這些規則是針對詞,而不是針對整個查詢字串。
- 如果查詢詞的長度介於
1
和4
個字元之間,則不允許錯字。只會考慮包含以此查詢詞開頭或長度相同的詞的文件 - 如果查詢詞的長度介於
5
和8
個字元之間,則允許一個錯字。會保留包含與一個錯字匹配的詞的文件,以便進行下一步處理。 - 如果查詢詞包含超過
8
個字元,則我們最多接受兩個錯字
這表示長度為 7
個字元的 saturday
,會使用第二個規則,並比對每個包含一個錯字的文件。例如
saturday
會被接受,因為它是相同的詞satuday
會被接受,因為它包含一個錯字sutuday
不會被接受,因為它包含兩個錯字caturday
不會被接受,因為它包含兩個錯字(如上文所述,詞的第一個字母上的錯字會被視為兩個錯字)
容錯對 typo
排名規則的影響
typo
排名規則會依據匹配查詢詞的錯字數量遞增來排序搜尋結果。錯字為 0 的文件排名最高,其次是錯字為 1 的文件,然後是錯字為 2 的文件。
typo
排名規則的存在與否不會影響容錯設定。但是,停用容錯設定也會有效地停用 typo
排名規則。這是因為所有返回的文件都會包含 0
個錯字。
總結
- 容錯會影響 Meilisearch 在匹配文件時的寬鬆程度
typo
排名規則會影響 Meilisearch 排序結果的方式- 停用容錯也會停用
typo