Возникает вопрос, какие подстроки вы хотите включить в поиск.Если бы вы включили все подстроки, то просто «Сердце» тоже подойдет, но это не совсем болезнь.Возможно, все подстроки с выравниванием по правому краю (слово) (возможно, с длиной> 1) были бы приемлемы.
Итак, одну вещь, которую вы могли бы сделать, - это обучить сопоставителю шаблонов Aho-Corrasick с помощью подстрок, которые вы хотите включить.Чтобы сохранить информацию о том, из какого словарного термина взята подстрока, вам, вероятно, нужно немного изменить алгоритм (если важно сохранить эту информацию) или создать другую структуру данных, чтобы потом ее искать.
В любом случае я бы преобразовалсписок болезней и документы, которые вы хотите найти в нижнем регистре до обучения / соответствия.Если есть вероятность орфографических ошибок - есть также бумаги о нечетких ахокоррацитных автоматах.