Если файл источника данных слишком велик, вы должны сделать это на стороне сервера. Вам нужно, чтобы пользовательский интерфейс вызывал api со строкой запроса, и чтобы сервер находил соответствующие данные и возвращал их.
Вы также можете сортировать данные 20k определенным образом, как дерево, чтобы запрос мог быть быстрее или использовать базу данных.
Связанный с моим вопросом:
Вот PDF, который предоставляет широкий обзор соображений для рабочего Java на гостях VMware: текст ссылки