Это тоже общие алгоритмы, поэтому, пожалуйста, не прекращайте читать, если видите текст в тексте (пропустите первые 3 строки)
В Solr, для компонента проверки орфографии я установил extendedResults, чтобы получить частоты исправленного слова, а затем выбрал слово с наилучшей частотой. Я понимаю алгоритм проверки правописания, основанный на редактировании расстояния. Для примера:
Запрос к Solr: Мариен
Возвращенный текст проверки орфографии: Морской (Freq: 120), Рыночный (Freq: 900) и другие. Мой словарь здесь основан на проиндексированных словах.
Поэтому я выбрал «Маркет» (с большей частотой), но это неправильно, поскольку мое намерение было морским. Оба имеют Расстояние редактирования 2.
Теперь, как я могу улучшить этот Алгоритм, чтобы выбрать морской вместо рыночного (основанного на чем-то большем, чем редактирование расстояния и частоты)?
Должен ли я также включать некоторые алгоритмы "soundex"?
Я ищу простые вещи, которые я могу быстро реализовать.
Я даже пытался использовать алгоритм исправления заклинаний Питера Норвига (что здорово), но снова я столкнулся с теми же проблемами.