容錯設定
容錯功能可幫助使用者即使在搜尋查詢包含拼寫錯誤或錯字時,也能找到相關結果,例如,輸入 phnoe
而不是 phone
。您可以為每個索引設定容錯功能。
已啟用
容錯功能預設為啟用,但您可以在需要時停用它
curl \
-X PATCH 'https://127.0.0.1:7700/indexes/movies/settings/typo-tolerance' \
-H 'Content-Type: application/json' \
--data-binary '{ "enabled": false }'
停用容錯功能後,Meilisearch 不會再將與您的查詢詞彙相差幾個字元的字詞視為符合項。例如,查詢 phnoe
將不再傳回包含字詞 phone
的文件。
在大多數情況下,啟用容錯功能可以帶來更好的搜尋體驗。 大量或多語言資料集可能是例外,因為在這些情況下,容錯功能可能會導致誤判符合項。
minWordSizeForTypos
預設情況下,Meilisearch 接受查詢詞彙包含五個或以上字元時有一個錯字,如果詞彙至少有九個字元,則最多接受兩個錯字。
如果您的資料集包含 seven
,搜尋 sevem
或 sevan
將會符合 seven
。但 tow
不會符合 two
,因為它少於 5
個字元。
您可以使用 minWordSizeForTypos
物件覆寫這些預設設定。下面的程式碼範例將一個錯字的最小字詞大小設定為 4
,兩個錯字的最小字詞大小設定為 10
。
curl \
-X PATCH 'https://127.0.0.1:7700/indexes/movies/settings/typo-tolerance' \
-H 'Content-Type: application/json' \
--data-binary '{
"minWordSizeForTypos": {
"oneTypo": 4,
"twoTypos": 10
}
}'
更新 minWordSizeForTypos
物件時,請記住
oneTypo
必須大於或等於 0,且小於或等於twoTypos
twoTypos
必須大於或等於oneTypo
,且小於或等於255
換句話說:0 ≤ oneTypo ≤ twoTypos ≤ 255
。
我們建議將 oneTypo
的值保持在 2
到 8
之間,並將 twoTypos
的值保持在 4
到 14
之間。如果任一值太低,您可能會得到大量的誤判結果。另一方面,如果兩個值都設定得太高,許多搜尋查詢可能無法從容錯功能中受益。
容錯:特殊情況
第一個字元上的錯字 Meilisearch 會將查詢第一個字元上的錯字視為兩個錯字。
串聯 在考慮容錯可能的候選項時,Meilisearch 會串聯以空格分隔符號分隔的多個搜尋詞彙。這被視為一個錯字。例如,搜尋 any way
將會符合包含 anyway
的文件。
如需更多關於錯字計算的資訊,請參閱下方。
disableOnWords
您可以將查詢詞彙新增到 disableOnWords
,為這些詞彙停用容錯功能。disableOnWords
不區分大小寫。
curl \
-X PATCH 'https://127.0.0.1:7700/indexes/movies/settings/typo-tolerance' \
-H 'Content-Type: application/json' \
--data-binary '{
"disableOnWords": [
"shrek"
]
}'
Meilisearch 在搜尋時不會對查詢詞彙 Shrek
或 shrek
應用容錯功能來符合文件。
disableOnAttributes
您可以將特定文件屬性新增到 disableOnAttributes
,為該屬性停用容錯功能。下面的程式碼範例會停用 title
的容錯功能
curl \
-X PATCH 'https://127.0.0.1:7700/indexes/movies/settings/typo-tolerance' \
-H 'Content-Type: application/json' \
--data-binary '{ "disableOnAttributes": ["title"] }'
使用上述設定,title
屬性中的符合項將不會容忍任何錯字。例如,搜尋 beautiful
(9 個字元) 將不會符合由 Javier Bardem 主演的電影「Biutiful」。使用預設設定,這將會是一個符合項。