【问题标题】:General String Filter / Search通用字符串过滤器/搜索
【发布时间】:2011-05-02 00:58:10
【问题描述】:

我正在寻找一些关于过滤和字符串搜索的好主意,或者至少是一些关于该主题的好文章的指针。我有一个 C# WP7 应用程序,它有一个项目列表,它会搜索另一个列表。但是我发现过滤器不是很好。假设我在一个列表中有弗朗西斯科,它会在列表中找到旧金山湾大桥。确切地说,一个想法是,但是您会错过诸如“The Bay”之类的内容将无法与“Bay”匹配。

我想我正在寻找使过滤引擎更智能的最佳实践,现在,如果您在列表中的任何位置找到任何匹配项,它几乎只是显示。以下是我正在使用的基本代码,非常简单地查找名称。只是想要一些想法让它更“聪明”。

subList.Select(arty => mainList.Where(Item => Item.AllItems.IndexOf(item.Name, StringComparison.OrdinalIgnoreCase) >= 0))

【问题讨论】:

  • 嗯,这对我来说听起来很像人工智能,需要大量训练才能给出“可接受”的结果。这不是一个简单的算法。

标签: c# string search filter


【解决方案1】:

另一种流行的方法是在必要的插入、删除或替换操作方面的相似性,以便从一个字符串(搜索词)到另一个(数据存储中的匹配项) - Levenshtein distance

您可以使用 Levenshtein(或 Edit)距离计算分数,然后根据低于特定阈值所需的最小变化取前 N 个。

【讨论】:

  • 这是一个有趣的点,我正在处理的数据通常是用户输入的,有时可能稍微不正确。 “The”是字符串中常见的添加或缺失项。如果输入错误,复杂的拼写也会导致问题。
猜你喜欢
  • 2020-11-26
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
  • 2012-08-08
  • 2019-09-17
  • 2018-08-08
  • 2018-06-29
  • 2013-07-12
相关资源
最近更新 更多