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

Смотрите также