我有一个在线Web应用程序,带有顶部菜单树,用于打开用于执行不同任务的不同小部件。随着应用程序越来越强大,该树已变得庞大且难以导航。我实现了一个搜索功能,用户只需键入菜单名称或其中的一部分,然后使用正则表达式查找菜单树中与用户输入内容相匹配的所有项目。我的正则表达式允许部分单词和交换单词,也限制搜索到每个单词的开头。它不允许的一件事是拼写错误的单词。我明白,为了允许拼写错误的单词,最好不要使用正则表达式,而是使用字符串距离方法,但我仍然希望允许部分单词和交换单词。这可能吗?Levenshtein只有部分字符串的距离(Java)
例如,如果菜单项是“财务费率维护”,则以下任何一项将与该菜单项匹配:“财务”,“财务报表”,“费率财务”等。比率“不匹配,因为”inance“不出现在该菜单项的任何单词的开头。我想要像“fnane rate”和“rate maintainance”这样的搜索,它们被拼写错误地匹配。
但“inance率” ** **是轻微的拼写错误,没有比“fnane率”更糟糕(非常接近,其实) 。为什么它不匹配,而后者应该?这是没有意义的。 – 2010-08-06 19:14:14
因为它目前的“入场率”不匹配,但我想象一旦实现了字符串距离,它会,但“比率”可能不会因为字符串距离太大。绑定到单词开头的原因是因为我有类似“vic”的搜索匹配到“地图服务”,这是不受欢迎的,因为有很多项目带有“service”这个词,但是当用户搜索“vic”他们通常搜索名为“VIC”的菜单项 – 2010-08-06 19:19:00