Вы решаете задачу, которую решает Гугл, в целом.
в общем, путь, по которому можно пойти:
1/ прикрутить к вашей поисковой строке расстояние Левенштейна и искать совпадения. Уже будет работать. Плоховато, но лучше, чем ничего.
2/ Посчитать tf-idf на ваших документах и смотреть, что ввел пользователь. Будет работать значительно лучше
3/ построить w2v: каждому слову будет дан эмбеддинг (векторное представление), косинусные расстояния между векторами будут обозначать похожесть слов (синонимическую)
4/ Прикрутить Берт-подобные модели. Если сайт не какой-то специфический, можно даже не доучивать на вашем корпусе.
4 итерация - это, по сути, "предгенеративный" шаг. Потом начинаются большие языковые модели (типа огромного Ялма) и всякие вопросно-ответные системы типа чатЖПТ.