Используется словарь отсюда.
Приложение очень легко перенастроить на другой словарь — достаточно запустить скрипт и указать ему путь до файла со словарём. Скрипт генерирует разбиение словаря на меньшие файлы, каждый из которых содержит только слова, начинающиеся на одну букву. Именно с таким форматом словаря работает приложение — это сделано для того, чтобы не загружать весь файл в оперативную память.
Возможное улучшение: достаточно большие файлы можно разбивать на большее количество файлов, например, и по второй букве тоже. При таком подходе при загрузке приложения надо построить схему расположения файлов.
Каждое нажатие на клавишу при печати в строке поиска интерпретируется как отдельный запрос. При необходимости, в память перезагружается файл словаря (если первая буква запроса не совпадает с предыдущим запросом).
Затем в загруженном файле при помощи бинпоиска находится первая строка не меньше искомой в лексикографическом порядке, затем в результаты поиска выводятся все строки, для которых искомая является префиксом.
Сборка проекта реализована при помощи системы сборки Apache Maven. Собрать приложение в .jar
файл
со всеми зависимостями и ресурсами модно командой mvn package
, которая создаст в папке target
исполнимый файл jb-dictionary-jar-with-dependencies.jar
. Его, в свою очередь, можно запустить командой
java -jar target/jb-dictionary-jar-with-dependencies.jar
.
ВАЖНО: проект собран под Java 14. Для запуска по вышеописанной схеме необходимо иметь установленный в системе maven и JDK для Java версии 14 или выше.