容錯設定

    容錯功能可幫助使用者即使在搜尋查詢包含拼寫錯誤或錯字時,也能找到相關結果,例如,輸入 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,搜尋 sevemsevan 將會符合 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 物件時,請記住

    換句話說:0 ≤ oneTypo ≤ twoTypos ≤ 255

    我們建議將 oneTypo 的值保持在 28 之間,並將 twoTypos 的值保持在 414 之間。如果任一值太低,您可能會得到大量的誤判結果。另一方面,如果兩個值都設定得太高,許多搜尋查詢可能無法從容錯功能中受益。

    容錯:特殊情況

    第一個字元上的錯字 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 在搜尋時不會對查詢詞彙 Shrekshrek 應用容錯功能來符合文件。

    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」。使用預設設定,這將會是一個符合項。