如何在包含搜索拼写错误的单词的CustomObjects列表上执行文本搜索?

时间:2011-02-27 12:13:36

标签: c# asp.net sql-server

我想在我的自定义类的输入上执行文本搜索。该文本搜索不仅应匹配输入的字符串,还可以检查拼写错误的单词。所以我正在寻找一个能为我做这件事的图书馆。

更多上下文: 假设我从SQLServer2008数据库生成此业务对象:

public class MyTextObject
{
  public String Title {get;set;}
  public String Content {get;set;}
}

在我的申请表中,我有一个

List<MyTextObject>

并想要搜索单词“control”。搜索应返回标题或内容属性中具有单词“control”的任何MyTextObject。到目前为止没有问题:我可以使用LINQ-Expression轻松完成此操作。

这是棘手的部分:
让我们说在我的一个业务对象中,我想写“控制”,但我写的是“控制”。我希望搜索算法能够表明业务对象 如何以非暴力方式执行此操作以查找搜索键的可能排列?是否有任何算法或库可以帮助我解决这种情况? 我也愿意接受其他好的建议=)

2 个答案:

答案 0 :(得分:2)

我可以给你一个简单的想法,我们已经跟随。

首先,我们搜索les say的词是“contrlo”。 如果找不到这个词,我们会对拼写进行自动更正,为我们提供“控制”一词(可能还有更多),现在我们会搜索更正的词。

您可以找到许多拼写更正。

其他建议

我建议使用dtSearch。它的商业,但我说这是值得的。他们给出了一个简单的dll,可以用很多参数进行真正的搜索。

答案 1 :(得分:1)

如果我没弄错的话,你需要一些模糊的字符串匹配算法。我前段时间做了类似的事情,我使用了Levenshtein Distance,我相信this is the code that I ripped off。我很满意。