Algorithm 检测拼写错误的单词

Algorithm 检测拼写错误的单词,algorithm,language-agnostic,spell-checking,search-suggestion,Algorithm,Language Agnostic,Spell Checking,Search Suggestion,我有一个机场名称列表,我的用户可以输入一个机场名称来选择它以供进一步处理 您将如何处理拼写错误的姓名并提供建议列表 根据给定的用户输入查找正确的名称。最好让用户从机场名称列表中选择,而不是让他们自己键入。这样做是不会出错的。虽然这不会马上起作用,但您可以跟踪打字错误,并查看输入正确名称后他们最终输入的名称。这样,您可以跟踪最常见的拼写错误,并提供最佳选项。在代码中使用拼写检查。单词列表应仅包含机场的正确拼写 这不是一个很好的方法。您可以选择提供自动完成选项的控件,也可以选择其他人建议的下拉列表

我有一个机场名称列表,我的用户可以输入一个机场名称来选择它以供进一步处理


您将如何处理拼写错误的姓名并提供建议列表

根据给定的用户输入查找正确的名称。

最好让用户从机场名称列表中选择,而不是让他们自己键入。这样做是不会出错的。

虽然这不会马上起作用,但您可以跟踪打字错误,并查看输入正确名称后他们最终输入的名称。这样,您可以跟踪最常见的拼写错误,并提供最佳选项。

在代码中使用拼写检查。单词列表应仅包含机场的正确拼写

这不是一个很好的方法。您可以选择提供自动完成选项的控件,也可以选择其他人建议的下拉列表


如果您的技术支持,请使用AJAX。

再加上Kevin的建议,如果您使用带有javascript autocomplete的输入框,则可能是两全其美。比如


编辑:danish beat me:(

可能有一个现有的拼写检查库,您可以使用。做好这类工作的代码非常重要。如果您确实想自己编写,您可能需要查看

一种可能有效的方法是只生成一个可能的错误字及其更正的巨大列表(这里是一个示例),您可以将其缓存以获得更高的性能。



做一些类似levenshtein的事情,但是,因为他不是一路来的,所以效率更高

我知道这不是你所要求的,但是如果这是一个获得正确机场很重要的应用程序(例如订票)然后你可能需要一个确认阶段,以确保你有一个正确的。例如,有一些人获得了火车票。

Levenshtein距离计算起来非常昂贵,O(n^2),计算字典中每个单词的Levenshtein距离不是一件容易的事。本例中的字典只是机场列表。全世界只有几百个著名的机场。@楔形散列字典不一定会降低时间复杂度,但可能会有相当大的帮助。我试图删除downvote,但系统不支持主要原因是:看在上帝的份上,不是每个人都在用jquery/JavaScript/HTML写东西。语言不可知的人,语言不可知的人。有些人想要一个简单任务的简单解决方案。我为一个简单任务提供了一个简单的解决方案。每个问题都有多个解决方法。