错别字容忍度有助于用户即使在搜索查询中包含拼写错误或错别字时也能找到相关结果,例如,将 phone 拼写成 phnoe。您可以为每个索引配置错别字容忍度功能 Meilisearch 使用前缀莱文斯坦算法来确定文档中的某个词是否可能与查询词匹配。 上述错别字数量大致相当于莱文斯坦距离。两个单词 MP 之间的莱文斯坦距离可以被认为是“通过对 M 执行以下基本操作将 M 转换为 P 的最小成本”:
  • 字符替换(例如,kittensitten
  • 字符插入(例如,sitingsitting
  • 字符删除(例如,saturdaysatuday
默认情况下,Meilisearch 使用以下规则匹配文档。请注意,这些规则是按词而不是针对整个查询字符串。
  • 如果查询词在 14 个字符之间,则不允许有错别字。只有包含以该查询词开头或与该查询词长度相同的词的文档才被视为有效
  • 如果查询词在 58 个字符之间,则允许有一个错别字。包含与一个错别字匹配的词的文档将保留以进行下一步处理。
  • 如果查询词包含超过 8 个字符,我们最多接受两个错别字
这意味着 saturday(长度为 7 个字符)使用第二条规则并匹配每个包含一个错别字的文档。例如
  • saturday 被接受,因为它是相同的词
  • satuday 被接受,因为它包含一个错别字
  • sutuday 不被接受,因为它包含两个错别字
  • caturday 不被接受,因为它包含两个错别字(如上文所述,单词首字母的错别字被视为两个错别字)

错别字容忍度对 typo 排名规则的影响

typo 排名规则按匹配查询词的错别字数量递增对搜索结果进行排序。错别字数量为 0 的文档排名最高,其次是 1 个和 2 个错别字。 typo 排名规则的存在或不存在对错别字容忍度设置没有影响。但是,禁用错别字容忍度设置实际上也会禁用 typo 排名规则。 这是因为所有返回的文档都将包含 0 个错别字。 总结:
  • 错别字容忍度影响 Meilisearch 在匹配文档时的宽容程度
  • typo 排名规则影响 Meilisearch 如何对其结果进行排序
  • 禁用错别字容忍度也会禁用 typo
© . This site is unofficial and not affiliated with Meilisearch.