Если у вас есть маленький список слов, то вы можете запустить проверку регулярных выражений для всего списка слов. Преобразуйте строку запроса в регулярное выражение, и вы можете go.
В противном случае вы можете организовать список слов по частям, например, эквивалентно разделению его на несколько файлов в разных каталогах:
Appl => [ Apple ]
Chri => [ Christchurch, Christmas Tree, ... ]
Shop => [ Shopper, Shopping Bag, Shopkeeper, ]
(у вас может быть несколько уровней).
Поскольку ваш поисковый запрос выглядит как привязанный , то есть вы знаете, что он начинается в начале слова, когда вы ищете " ??? я ??? как? r ?? " вы видите, что «??? i» будет соответствовать только «Chri», и только смотреть в этот подсписок.
(На самом деле, если вам придется делать это много раз, вам лучше создать рекурсивный поиск и упорядочение списка в виде n- или "m-ary" дерева - вот несколько примеров ).