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.

Wyróżnione wyniki wyszukiwania tekstu w formacie HTML

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.

Interfejs API Java do wyszukiwania w plikach i folderach

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.

Zobacz też