我正在寻找关于过滤和字符串搜索的一些明智的想法,或者至少指向一些有关该主题的好文章。我有一个C#WP7应用程序,它有一个项目列表,它搜索另一个列表。但我发现过滤器不是很好。假设我在一个列表中有弗朗西斯科,它会在列表中找到旧金山湾大桥。一个想法是确切的,但是你错过了“The Bay”这样的东西将不会与“Bay”匹配。
我想我正在寻找使过滤引擎更智能的最佳实践,现在,如果您在列表中的任何位置获得任何匹配,那么它几乎只是显示。下面是我正在使用的基本代码,非常简单的查找名称。只是想要一些想法让它更“聪明”。
subList.Select(arty => mainList.Where(Item => Item.AllItems.IndexOf(item.Name,StringComparison.OrdinalIgnoreCase)> = 0))
答案 0 :(得分:0)
另一种流行的方法是在必要的插入,删除或替换操作方面相似,从一个字符串(搜索项)到另一个字符串(数据存储中的匹配项) - Levenshtein distance。
您可以使用Levenshtein(或编辑)距离计算得分,然后根据低于特定阈值所需的最小更改获取前N个。