IWordFormsProvider

IWordFormsProvider interface

定义单词形式提供程序的接口。

public interface IWordFormsProvider

方法

姓名 描述
GetWordForms(string) 获取指定单词的单词形式。 结果数组不包含原始单词。

评论

了解更多

例子

以下示例演示了如何实现自定义单词形式提供程序。

public class SimpleWordFormsProvider : IWordFormsProvider
{
    public string[] GetWordForms(string word)
    {
        List<string> result = new List<string>();

        // 假设输入的单词是复数,那么我们加上单数
        if (word.Length > 2 &&
            word.EndsWith("es", StringComparison.InvariantCultureIgnoreCase))
        {
            result.Add(word.Substring(0, word.Length - 2));
        }
        if (word.Length > 1 &&
            word.EndsWith("s", StringComparison.InvariantCultureIgnoreCase))
        {
            result.Add(word.Substring(0, word.Length - 1));
        }

        // 那么假设输入的单词是单数,我们加上复数
        if (word.Length > 1 &&
            word.EndsWith("y", StringComparison.InvariantCultureIgnoreCase))
        {
            result.Add(word.Substring(0, word.Length - 1) + "is");
        }
        result.Add(word + "s");
        result.Add(word + "es");
        // 所有规则都在 EnglishWordFormsProvider 类中实现

        return result.ToArray();
    }
}

下一个示例演示如何设置自定义单词形式提供程序以供使用。

string indexFolder = @"c:\MyIndex\";
string documentsFolder = @"c:\MyDocuments\";
  
// 在指定文件夹中创建索引
Index index = new Index(indexFolder);
  
// 索引指定文件夹中的文档
index.Add(documentsFolder);
 
// 设置自定义单词表单提供程序实例
index.Dictionaries.WordFormsProvider = new SimpleWordFormsProvider();
 
// 创建搜索选项实例
SearchOptions options = new SearchOptions();
options.UseWordFormsSearch = true; // 启用搜索单词形式
  
// 在索引中搜索
SearchResult result = index.Search("relative", options);
  
// 可以找到下面的词:
// 相对的
// 相对的s

也可以看看