Я написал простую программу на Java, используя PDFBox для извлечения слов из файла PDF. Читает текст из PDF и извлекает слово за словом.
public class Main {
public static void main(String[] args) throws Exception {
try (PDDocument document = PDDocument.load(new File("C:\\my.pdf"))) {
if (!document.isEncrypted()) {
PDFTextStripper tStripper = new PDFTextStripper();
String pdfFileInText = tStripper.getText(document);
String lines[] = pdfFileInText.split("\\r?\\n");
for (String line : lines) {
System.out.println(line);
}
}
} catch (IOException e){
System.err.println("Exception while trying to read pdf document - " + e);
}
}
}
Есть ли способ извлечь слова без дубликатов?
@NoEm Как это будет выглядеть в коде?
// удерживаем все недублированные слова Set <String> uniqueWords = new HashSet <String> (); for (Строка строка: строки) {Строка [] слова = строка.split (""); для (Строковое слово: слова) {uniqueWords.add (word.trim ()); }} // выводим все недублированные слова System.out.println ("Non-duplicated words:"); Итератор <String> it = uniqueWords.iterator (); в то время как (it.hasNext ()) {System.out.println (it.next ()); }
Вместо этого вы можете опубликовать это как ответ
space
- line.split(" ")
HashSet
для хранения этих слов и продолжайте добавлять к нему все слова.HashSet по своей природе игнорирует дубликаты.
HashSet<String> uniqueWords = new HashSet<>();
for (String line : lines) {
String[] words = line.split(" ");
for (String word : words) {
uniqueWords.add(word);
}
}
Так мне нужно создать его? Как тогда извлекать слова в Hashset?
Когда я пытаюсь напечатать uniqueWords, я все еще мог видеть дубликаты в каждом ключе
Можно ли после сохранения в hashSet сохранить эти «слова» в базе данных, такой как MYSQL, для полнотекстовой индексации?
Если ваша цель - удалить дубликаты, то один из способов добиться этого - добавить массив в java.util.Set
. Итак, прямо сейчас вам просто нужно сделать следующее:
Set<String> noDuplicates = new HashSet<>( Arrays.asList( lines ) );
Больше никаких дубликатов.
Как мне сохранить эти слова в хеш-таблице MySQL?
Это другая проблема.
В общем, для этого можно использовать Set <T>, примерно так: Set <String> words = new HashSet <String> (); затем вы можете добавить каждое слово в набор set.add (слово), он проигнорирует дублированное слово, после чего вы можете снова просмотреть набор, чтобы получить все слова, которые не являются дублированными словами.