我该如何实现这个搜索

时间:2011-06-20 21:14:09

标签: c# sql sql-server

我正在尝试开发一种允许我完成此操作的搜索

要搜索的字符串

This is a text

用户输入

this_is_a_text
this a text
tihs a txt <----notes that the user made a wrong input

但始终给了我this is a text

的最佳巧合

我想知道是否可以使用containsfreetext。我也一直在考虑在c#中加载所有记录的方法中逐个字符地匹配,因为只有300个并且构成等于的百分比。但这只是有人帮助我的想法。

更新

我尝试使用函数soundex,但它对我没什么帮助......

3 个答案:

答案 0 :(得分:2)

如果您想要对数据进行一次性对帐,则最好加载两个列表以匹配C#,然后使用edit distance算法(例如Levenshtein Distance)来迭代最佳匹配。可能非常耗时,但就像我说的 - 如果你只需做一次......

您可以将此算法实现为SQLServer中的一个函数(谷歌搜索会找到很多已经为您完成此操作的人...)。此外,诸如此类的算法可以提供不需要的或意外的匹配,其中人类匹配器将选择另一种替代方案。

小心!

答案 1 :(得分:0)

您可以使用替换方法。

var stringToSearch = userInputText.Replace('_','');

答案 2 :(得分:0)

尝试Soundex