Вы можете использовать сравнение строк между строками одинаковой длины и разрешить для одного (или двух) не совпадающих символов.
Однако, посмотрев на ваш сайт, я бы предложил сопоставить слова по их фонетическому представлению, а затем выполнить поиск по ним, обработав строки как массивы символов и начав сравнение со спины.
Чтобы построить над вашим примером: рядом -> \ 'nir \ pear -> \' per \ dear -> \ 'dir \ tail -> \' rir \ or \ 'rer \ here -> \' hir \
(Я срываю Merriam-Webster онлайн для фонетической записи здесь)
Я боюсь, что отображение должно быть сделано в виде справочной таблицы и не может быть скомпилировано, потому что в английском языке нет очень строгих правил произношения ...
В любом случае, когда вы сопоставили свои слова, вы можете сравнить их последнюю фонему: в этом случае вы можете искать слова, оканчивающиеся на "ир" (в данном случае исключая "груша").
Этот метод не выглядит ужасно эффективным: если бы я мог использовать некоторое дисковое пространство, я бы сохранил поиски для будущей ссылки: поэтому, когда при повторном использовании ищутся все слова, которые рифмуются до "рядом", приложение просто загружает сохраненные поиск, так как словари обычно не развиваются слишком быстро.