拼写容错设置

    拼写容错帮助用户即使在搜索查询中包含拼写错误或错别字时也能找到相关结果,例如,输入 phnoe 而不是 phone。您可以 为每个索引配置拼写容错功能

    已启用

    默认情况下启用拼写容错,但如果需要,您可以禁用它。

    curl \
      -X PATCH 'http://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 'http://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 'http://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 'http://127.0.0.1:7700/indexes/movies/settings/typo-tolerance' \
      -H 'Content-Type: application/json' \
      --data-binary '{ "disableOnAttributes": ["title"] }'

    使用上述设置,title 属性中的匹配项将不会容忍任何错别字。例如,搜索 beautiful(9 个字符)将不会匹配由哈维尔·巴登主演的电影“Biutiful”。使用默认设置,这将是匹配项。