【发布时间】:2011-07-15 19:37:35
【问题描述】:
我需要为客户创建一个变体/同义词表,该客户需要确保如果有人输入了错误的变量,我们可以返回正确的部分。
例如,如果我们的零件 ID 为 GRX7-00C。当客户将此输入到零件表中时,他们希望自动创建一个变体表,该表将存储该产品可能的变体。像 GBX7-OOC(字母 O 而不是数字 0)。或者如果他们有数字 1,则能够使用 L 或 I。
因此,如果我们有部分 GRL8-OOI,我们可以在变体表中关联以下内容:
- GRI8-OOI
- GRL8-0OI
- GRL8-O0I
- GRL8-OOI
- 等等……
我目前有一个手动输入,但这些部分可能有很多变化。那么,有人对我如何为此创建一个自动过程有一个好主意吗?
我完全不知道如何在 C# 和/或 SQL 中做到这一点。
谢谢!
【问题讨论】:
-
这听起来是一个非常糟糕的解决问题的方法。如果 ID 错误,我宁愿验证用户输入并抛出一条消息。为用户提供用于选择部件 ID 的其他工具(下拉列表、按名称查找等)也会有所帮助。
-
他们可能会使用它来建议正确的部分,所以我可以看到该功能的用途,但不确定存储所有变体是否明智。是要考虑字符插入和删除,还是只考虑字符替换?
-
如何进行搜索,根据可用的真实代码对输入进行评分并返回最佳(甚至显示最接近的匹配)。
-
按照 Jon 的思路,编写一个自定义类型的 Soundex 函数将相似字符折叠成单个字符怎么样。然后您可以存储一个“Lookex”代码。计算用户输入的 Lookex 并在该代码上搜索会很容易。
-
需要考虑的事情 - 如果 O,0,Q 被认为是可替代的,而 1,L,I 被认为是可替代的,那么产品 QIOL-OOL 将有数千(2187)个排列,你必须商店。
标签: c# sql algorithm variations