拼写容错设置
拼写容错功能可以帮助用户即使在搜索查询中包含拼写错误或错别字时也能找到相关的结果,例如,输入 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 个字符)将不会匹配由哈维尔·巴登主演的电影“Biutiful”。使用默认设置,这将是匹配的。