【发布时间】:2014-08-03 16:53:21
【问题描述】:
我想使用 Hunspell 向字典中添加一些自定义单词:
我在构造函数中从字典加载:
private readonly Hunspell _hunspell;
public NhunspellHelper()
{
_hunspell = new Hunspell(
HttpContext.Current.Server.MapPath("~/App_Data/en_US.aff"),
HttpContext.Current.Server.MapPath("~/App_Data/en_US.dic"));
}
这个函数将一个新词添加到字典中:
public void AddToDictionary(string word)
{
_hunspell.Add(word); // or _hunspell.AddWithAffix(word, "aaa");
}
在我向字典中添加一个单词后,如果我在同一个请求中拼写这个单词:
_hunspell.Spell(word)
它返回true,但是如果我在另一个请求中拼写这个词,它会返回false
我检查了.aff 和.dic 这两个文件,我发现它在_hunspell.Add(word); 之后没有改变,所以当发送另一个请求时,构造函数会从原始字典中创建一个新的 Hunspell 实例。
我的问题是: Nhunspell 是将新单词添加到字典中并将其保存回物理文件(*.aff 或 *.dic),还是只是将其添加到内存中而不对字典文件执行任何操作?
我在字典中添加新单词时做错了吗?
【问题讨论】:
-
我在 hunspell c++ 中做了一些调查,但它看起来并没有保存文件的功能。我可能是错的。 C++ Manager Headers 似乎没有任何存档
-
嗨@Prescott,我用C#而不是C++工作
-
NHunspell 是 C++ 原生 dll 的包装器。在研究 .Add() 方法以确定它是否修改了文件本身(与仅在内存字典中的内部文件相比)时,我不得不深入研究 C++,因为 C# 包装器会调用它。
-
哦,所以答案是 NHunspell 不会将任何内容保存回字典?
-
您在 Web 服务器上使用 Hunspell。强烈建议在多线程环境中使用 SpellFactory 类 (help.crawler-lib.net/NHunspell/html/…)。 (codeproject.com/Articles/43769/…)
标签: c# dictionary nhunspell