public static Map<Row, Map<String, Set<String>>> parse(List<Row> companies, List<String> keyWords, String dir) {
        Map<Row, Map<String, Set<String>>> companyKeywordMap = new HashMap<>();
        if (keyWords == null || keyWords.isEmpty()) {
            for (Row row : companies) {
                companyKeywordMap.put(row, new HashMap<String, Set<String>>());
            }
            return companyKeywordMap;
        }
        client.getParams().setSoTimeout(10000);
        client.getParams().setConnectionManagerTimeout(10000L);
        String copyTo = dir + "/";

        int counter = 0;

        for (Row company : companies) {
            String companyName = company.getCompanyName();
            ++counter;
            System.out.println("Searching for pdf #: " + counter);
            String url = company.getUrl();
            String filename = company.getYear() + url.substring(url.lastIndexOf("/") + 1).trim();
            String parsedText = downloadPhoto(url, copyTo, filename);
            parsedText = downloadPdf(copyTo, filename);
            parsedText = parsedText.replaceAll("\\r", " ");
            parsedText = parsedText.replaceAll("\\\\r", " ");
            parsedText = parsedText.replaceAll("\\n", " ");
            parsedText = parsedText.replaceAll("\\\\n", " ");
            parsedText = parsedText.replaceAll("\\s+", " ").trim();
            String[] sentences = parsedText.split("(?<=[.?!])\\s+(?=[a-zA-Z])");

            Map<String, Set<String>> sentenceKeywords = new HashMap<>();
            for (String sentence : sentences) {
                Set<String> keywordSet = new HashSet<>();

                for (String keyword : keyWords) {
                    if (sentence.toLowerCase().indexOf(keyword.toLowerCase()) >= 0) {
                        keywordSet.add(keyword);
                    }
                }
                if (!keywordSet.isEmpty()) {
                    sentenceKeywords.put(sentence, keywordSet);
                }
            }
            if (!sentenceKeywords.isEmpty()) {
                companyKeywordMap.put(company, sentenceKeywords);
            } else {
                FileUtils.deleteFile(copyTo + filename);
            }
        }

        return companyKeywordMap;
    }