Czy zastanawiałeś się kiedyś, jak bezproblemowo przeszukiwać wiele plików, a może poruszać się po skomplikowanym przeszukiwaniu plików w wielu folderach? Tutaj znajdziesz odpowiedzi na wszystkie swoje pytania. W tym artykule zagłębiamy się w dziedzinę skanowania tekstu, pokazując, jak wyszukiwać wiele tekstów lub fraz w różnych plikach rozmieszczonych w różnych folderach przy użyciu języka Java.
API Java do skanowania tekstu w plikach i folderach
Dzisiaj użyjemy interfejsu API GroupDocs.Search for Java do wyszukiwania wielu tekstów w plikach o różnych formatach w folderach. Ta biblioteka umożliwia nam programowe skanowanie tekstu w szerokim zakresie formatów plików w celu uzyskania dokumentów programu Word, arkuszy kalkulacyjnych, prezentacji, plików PDF, plików znaczników, książek elektronicznych, wiadomości e-mail, dokumentów One Note i archiwów ZIP. Dokumentacja zawiera szczegółową listę obsługiwanych formatów plików.
Możesz pobrać plik JAR z sekcji pobierania lub skorzystać z najnowszego repozytorium i konfiguracji Mavena zależności w swoich aplikacjach Java.
Wyszukiwanie wielu tekstów w plikach w folderach przy użyciu języka Java
Wykonaj poniższe kroki, aby przeszukać wiele plików w wielu folderach za pomocą języka Java i wygenerować wyróżnione pliki wyjściowe HTML dla każdego znalezionego dokumentu.
- Utwórz obiekt Indeks z określoną ścieżką folderu indeksu.
- Indeksuj nadrzędny folder dokumentów przy użyciu metody dodawania.
- Zdefiniuj zapytanie zawierające wiele terminów lub wyrażeń.
- Wykonaj skanowanie tekstu metodą wyszukiwania i zapisz wyniki.
- Iteruj po wynikach wyszukiwania:
- Uzyskaj dostęp do każdego znalezionego dokumentu za pomocą metody getFoundDocument.
- Uzyskaj dostęp lub wydrukuj dowolne informacje o pliku znalezionego dokumentu.
- Skonfiguruj OutputAdapter dla żądanego formatu i ścieżki.
- Utwórz Zakreślacz dla dokumentu.
- Podświetl i zapisz wyniki wyszukiwania w pliku HTML, korzystając z metody podświetlania.
// Wyszukiwanie tekstowe w wielu plikach o różnych formatach w wielu folderach przy użyciu języka Java
// Tworzenie indeksu w określonym folderze
Index index = new Index("path/for/indexingFolder");
// Indeksowanie dokumentów z określonego folderu
index.add("path/parent-folder/");
String query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.search(query);
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
FoundDocument document = result.getFoundDocument(i);
System.out.println("====================================");
System.out.println("File Name: " + document.getDocumentInfo().getFilePath());
OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
Highlighter highlighter = new DocumentHighlighter(outputAdapter);
index.highlight(document, highlighter);
}
Powyższy kod łącznie umożliwia wyszukiwanie określonych tekstów w wielu plikach i generowanie podświetlonych plików wyjściowych HTML dla każdego znalezionego dokumentu.
Drukowanie wyników wyszukiwania tekstowego
Z wyniku wyszukiwania możesz wydobyć dalsze informacje o znalezionych dokumentach.
// Drukowanie wyników wyszukiwania ===
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
FoundDocument document = result.getFoundDocument(i);
// Drukowanie wyników wyszukiwania ===========
System.out.println("Occurrences: " + document.getOccurrenceCount());
for (FoundDocumentField field : document.getFoundFields()) {
System.out.println("\tField: " + field.getFieldName());
System.out.println("\tOccurrences: " + field.getOccurrenceCount());
// Drukuję znalezione terminy
if (field.getTerms() != null) {
for (int k = 0; k < field.getTerms().length; k++) {
System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
}
}
// Drukowanie znalezionych fraz
if (field.getTermSequences() != null) {
for (int k = 0; k < field.getTermSequences().length; k++) {
String[] terms = field.getTermSequences()[k];
String sequence = "";
for (String term : terms) {
sequence += term + " ";
}
System.out.println("\t\t" + sequence + " - " + field.getTermSequencesOccurrences()[k]);
}
}
}
}
Wynikiem wydruku powyższych wyników wyszukiwania uzyskanych z plików DOCX, PDF i TXT będzie następujący wynik:
File Name: Lorem ipsum.docx
Occurrences: 101
Field: filename
Occurrences: 1
lorem ipsum - 1
Field: content
Occurrences: 100
non - 94
lorem ipsum - 6
====================================
File Name: Lorem ipsum.pdf
Occurrences: 60
Field: filename
Occurrences: 1
lorem ipsum - 1
Field: content
Occurrences: 59
non - 53
lorem ipsum - 6
====================================
File Name: English.txt
Occurrences: 39
Field: content
Occurrences: 39
water - 39
Kompletny kod
Oto kompletny kod Java, który wspólnie przeszukuje ciągi tekstowe i frazy w wielu plikach i folderach:
// Wyszukiwanie tekstowe w wielu plikach o różnych formatach w wielu folderach przy użyciu języka Java
// Tworzenie indeksu w określonym folderze
Index index = new Index("path/for/indexingFolder");
// Indeksowanie dokumentów z określonego folderu
index.add("path/parent-folder/");
String query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.search(query);
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
FoundDocument document = result.getFoundDocument(i);
System.out.println("====================================");
System.out.println("File Name: " + document.getDocumentInfo().getFilePath());
OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
Highlighter highlighter = new DocumentHighlighter(outputAdapter);
index.highlight(document, highlighter);
// Drukowanie wyników wyszukiwania ===========
System.out.println("Occurrences: " + document.getOccurrenceCount());
for (FoundDocumentField field : document.getFoundFields()) {
System.out.println("\tField: " + field.getFieldName());
System.out.println("\tOccurrences: " + field.getOccurrenceCount());
// Drukuję znalezione terminy
if (field.getTerms() != null) {
for (int k = 0; k < field.getTerms().length; k++) {
System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
}
}
// Drukowanie znalezionych fraz
if (field.getTermSequences() != null) {
for (int k = 0; k < field.getTermSequences().length; k++) {
String[] terms = field.getTermSequences()[k];
String sequence = "";
for (String term : terms) {
sequence += term + " ";
}
System.out.println("\t\t" + sequence + " - " + field.getTermSequencesOccurrences()[k]);
}
}
}
}
Uzyskanie bezpłatnej licencji lub bezpłatnej wersji próbnej
Darmowa licencja
Aby eksplorować tę bibliotekę bez ograniczeń, możesz uzyskać licencję tymczasową za darmo.
Bezpłatny okres próbny
Pobierz bezpłatną wersję próbną z sekcji pobierania.
Wniosek
W tym artykule właśnie omówiliśmy skanowanie tekstu w celu wyszukiwania wielu tekstów w wielu plikach w wielu folderach przy użyciu języka Java. Zaczynając od zapytania, przeszukaliśmy wiele plików i folderów, a znalezione wyniki wyróżniliśmy w odpowiednich plikach HTML.
Aby uzyskać szczegółowe informacje na temat interfejsu API, zachęcamy czytelników do zapoznania się z dokumentacją. Pytania i dalsze dyskusje można kierować na udostępnione forum.