3

我有一个带有顶部菜单树的在线 Web 应用程序,用于打开不同的小部件来执行不同的任务。随着应用程序变得越来越强大,该树变得越来越大并且难以导航。我已经实现了一个搜索功能,用户可以只输入菜单名称或其中的一部分,我使用正则表达式在菜单树中查找与用户类型匹配的所有项目。我的正则表达式允许部分单词和交换单词,并且还将搜索限制在每个单词的开头。它不允许的一件事是拼写错误的单词。我知道要允许拼写错误的单词,最好不要使用正则表达式,而是使用字符串距离方法,但我仍然希望允许部分单词和交换单词。这可能吗?

例如,现在,如果菜单项是“Finance Rate Maintenance”,则以下任何一项都将与该菜单项匹配:“finance”、“finance ra”、“rate finance”等。“inance rate”不会匹配,因为“inance”没有出现在该菜单项的任何单词的开头。我想要“fnane rate”和“rate maintenance”之类的搜索,它们的拼写略有错误以匹配。

4

1 回答 1

1

我会为每个选项附加一个单词列表,同时维护一个包含所有单词的字典。然后,当用户输入查询时,程序会检查他们输入的每个单词是否都在字典中。如果不是,它会找到最接近的单词 via。字符串距离并更正单词。

最后,它会建议与更正的输入词有最多共同词的菜单选项。

拼写校正器的一个很好的例子(虽然在 python 中)是http://norvig.com/spell-correct.html

于 2010-08-06T19:06:31.927 回答