0

我必须在我的一个项目中包含拼写检查功能,我决定使用 hunspell,因为它是一个出色的拼写检查器(许多免费和专有软件都在使用它)。我下载了源代码并将项目 libhunspell 添加到项目中。让它编译没有任何错误,还从openoffice网站下载了英文词典。以下是我用来初始化 hunspell 引擎和类它的拼写检查功能的代码:

    Hunspell *spellObj = (Hunspell *)hunspell_initialize("en_us.aff", "en_us.dic");

if(spellObj)
{
    int result = hunspell_spell(spellObj, "apply");
    hunspell_uninitialize(spellObj);
}

代码不会抛出任何错误,但无论单词是什么,hunspell_spell 总是返回 0。

4

1 回答 1

2

尝试这个。这就是我在 MVC3 项目中使用的

private const string AFF_FILE = "~/App_Data/en_us.aff";
private const string DICT_FILE = "~/App_Data/en_us.dic";

public ActionResult Index(string text)
{
  using(NHunspell.Hunspell hunspell = new NHunspell.Hunspell(Server.MapPath(AFF_FILE), Server.MapPath(DICT_FILE)))
  {
    Dictionary<string, List<string>> incorrect = new Dictionary<string, List<string>>();
    text = HttpUtility.UrlDecode(text);
    string[] words = text.Split(new char[] { ' ' }, StringSplitOption.RemoveEmptyEntries);
    foreach ( string word in words)
    {
       if (!hunspell.Spell(word) && !incorrect.ContainsKey(word))
       {
          incorrect.Add(word, hunspell.Suggest(word));
       }
    }
    return Json(Incorrect);
  }
}

public ActionResult Suggest(string word)
{
   using(NHunspell.Hunspell hunspell = new NHunspell.Hunspell(Server.MapPath(AFF_FILE), Server.MapPath(DICT_FILE)))
   {
      word = HttpUtility.UrlDecode(word);
      return Json(hunspell.Suggest(word));
   }
}
public ActionResult Add(string word)
{
  using(NHunspell.Hunspell hunspell = new NHunspell.Hunspell(Server.MapPath(AFF_FILE), Server.MapPath(DICT_FILE)))
   {
      word = HttpUtility.UrlDecode(word);
      return Json(hunspell.Add(word));
   }
}
于 2013-01-29T12:59:10.930 回答