Я работаю над простым полнотекстовым инвертированным индексом, пытаясь создать индекс слов, которые я извлекаю из файлов PDF.Я использую библиотеку PDFBox для достижения этой цели.
Однако я хотел бы знать, как определить определение слова для индексации. Способ, которым работает моя индексация, состоит в том, что каждое слово с пробелом - это слово-токен.Например,
This string, is a code.
В этом случае: индексная таблица будет содержать
This
string,
is
a
code.
Недостаток здесь для типа string,
, он идет с запятой, где я думаю string
было бы просто достаточно, потому что никто не ищет string,
или code.
Возвращаясь к моему вопросу, есть ли там особое правило, которое я мог бы использовать, чтобы определить свой токен слова таким образом, чтобы предотвратить подобные проблемы?с чем у меня?
код:
File folder = new File("D:\\PDF1");
File[] listOfFiles = folder.listFiles();
for (File file : listOfFiles) {
if (file.isFile()) {
HashSet<String> uniqueWords = new HashSet<>();
String path = "D:\\PDF1\\" + file.getName();
try (PDDocument document = PDDocument.load(new File(path))) {
if (!document.isEncrypted()) {
PDFTextStripper tStripper = new PDFTextStripper();
String pdfFileInText = tStripper.getText(document);
String lines[] = pdfFileInText.split("\\r?\\n");
for(String line : lines) {
String[] words = line.split(" ");
for (String word : words) {
uniqueWords.add(word);
}
}
}
} catch (IOException e) {
System.err.println("Exception while trying to read pdf document - " + e);
}
}
}