Wyszukiwanie pełnotekstowe to sposób wyszukiwania tekstu/zapytania w zbiorze dokumentów. Takie podejście szybko wyszukuje wszystkie wystąpienia terminu/wyrażenia i działa przy użyciu indeksów tekstowych. W tym artykule dowiemy się, jak programowo przeszukiwać cały tekst w dokumentach przy użyciu języka Java.

Wyszukiwanie pełnotekstowe

Następnie możesz wdrożyć różne techniki wyszukiwania i zbudować rozwiązanie do wyszukiwania dokumentów edytorów tekstu, arkuszy kalkulacyjnych, prezentacji, plików HTML, plików PDF, eBooków, wiadomości e-mail, archiwów ZIP i wielu innych formatów dokumentów.

Poniżej omówiono następujące tematy:

Java API do wyszukiwania pełnotekstowego

GroupDocs.Search zapewnia przeszukiwanie pełnotekstowe Java API, które można zintegrować z dowolną aplikacją bez uzależnienia od narzędzi i oprogramowania innych firm. Pozwala na przeszukiwanie dużej listy formatów dokumentów. Oto niektóre techniki wyszukiwania, które można wykonać za pomocą interfejsu API:

  • Wyszukiwanie z rozróżnianiem wielkości liter
  • Wyszukiwanie wyrażeń regularnych
  • Wyszukiwanie fasetowe
  • Wyszukiwanie rozmyte
  • Wyszukiwanie homofonów
  • Wyszukiwanie synonimów

Pobierz lub skonfiguruj

Możesz pobrać plik JAR z sekcji pobierania lub po prostu pobrać najnowsze konfiguracje repozytorium i zależności dla pliku pom.xml aplikacji Java opartych na Maven.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>21.3</version> 
</dependency>

Wyszukiwanie w plikach przechowywanych w folderze składa się z dwóch kroków.

  • Indeksowanie
  • Wykonaj wyszukiwanie

Indeksuj pliki przy użyciu języka Java

Indeks zawiera zeskanowany tekst wszystkich dokumentów. Dlatego podczas operacji wyszukiwania odwołuje się tylko do indeksu, a nie do tekstu oryginalnych dokumentów. Aby umożliwić natychmiastowe przeszukiwanie tysięcy dokumentów o tych samych lub różnych formatach plików, należy utworzyć indeks i dodać do niego te dokumenty. Gdy dokumenty są indeksowane, indeks jest gotowy do obsługi zapytań wyszukiwania.

Następujące proste dwa wiersze tworzą indeks, a także dodają folder dokumentów do indeksu.

Index index = new Index("indexingFolderPath");
index.add("documentsFolderPath");

Po zindeksowaniu wielu dokumentów w tym samym lub różnych formatach, takich jak (Word, PDF, Excel i HTML), możemy przejść dalej, aby przetworzyć nad nimi określone zapytanie (wyszukiwane hasło „Rysuj”). Poniżej opisano kroki wyszukiwania tekstu w wielu dokumentach w folderze przy użyciu języka Java:

  • Określ folder źródłowy dokumentów i folder indeksu.
  • Utwórz Indeks, korzystając z folderu indeksu.
  • Dodaj folder źródłowy do pliku index.
  • Przygotuj ciąg zapytania.
  • Przeprowadź wyszukiwanie przy użyciu metody search klasy Index.
  • Przejrzyj wszystkie wyniki wyszukiwania pod kątem właściwości każdego dokumentu.

Poniższy kod źródłowy przeprowadza wyszukiwanie tekstowe w Javie we wszystkich dokumentach w podanym folderze.

// Wyszukuj określony tekst w wielu dokumentach PDF, Word, Excel, HTML w folderze przy użyciu języka Java
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath");

// Wyszukiwanie w indeksie określonego tekstu
SearchResult result = index.search("Draw");

for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("Document Path: " + document.getDocumentInfo().getFilePath());
    System.out.println("Occurrence : " + document.getOccurrenceCount());
}

Otrzymamy ścieżkę dokumentu i liczbę wystąpień wyszukiwanych terminów we wszystkich dokumentach z tym określonym folderem. Oto zrzut ekranu dla wizualizacji.

Wyjście tekstowe pełnego wyszukiwania

Podświetl wyniki wyszukiwania tekstowego w Javie

Przeprowadźmy teraz to samo wyszukiwanie pełnotekstowe, a także zaznacz wszystkie wystąpienia pasujące do zapytania.

Poniższe kroki pokazują, jak wyróżnić wyniki wyszukiwania tekstowego:

  • Utwórz Indeksi dodaj folder dokumentów do indeksu.
  • Przygotuj ciąg zapytania.
  • Przeszukaj folder dokumentów za pomocą metody szukaj.
  • Podczas przeglądania wyników utwórz zakreślacz za pomocą HtmlHighlighter.
  • Użyj metody podświetlania, aby podświetlić wyniki wyszukiwania.

Poniższy kod generuje dane wyjściowe HTML z wyróżnionymi wynikami wyszukiwania przy użyciu języka Java.

// Podświetl wyniki wyszukiwania pełnotekstowego wielu dokumentów w folderze w Javie
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath"); // Synchronous indexing documents from the specified folder

String query = "draw"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index

for (int i = 0; i < result.getDocumentCount(); i++) 
{
    FoundDocument document = result.getFoundDocument(i);

    String path = "path/Highlighted-"+ i +".html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); 
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the highlighter
    index.highlight(document, highlighter); // Generates HTML formatted output document with highlighted search results
}

Jako wynik otrzymamy wiele plików HTML. Każdy plik pokaże zawartość osobnego dokumentu (np. excel.xlsx, source.docx, target.docx) z podświetlonymi wyszukiwanymi hasłami/słowami. Poniżej podano podświetlone wyjście HTML pliku DOCX, pliku TXT i pliku PDF uzyskane przy użyciu powyższego kodu.

Wyróżnij wyniki wyszukiwania pełnotekstowego w treści przy użyciu języka Java

Uzyskaj bezpłatną licencję API

Możesz uzyskać bezpłatną tymczasową licencję, aby korzystać z API bez ograniczeń ewaluacyjnych.

Wniosek

W tym artykule nauczyliśmy się wyszukiwać tekst w wielu dokumentach folderu w Javie. Ponadto omówiliśmy, jak programowo wyróżniać tekst wyników wyszukiwania w formacie HTML dla plików MS Word, plików TXT i plików PDF za pomocą GroupDocs.Search for Java.

Możesz dowiedzieć się więcej o API korzystając z documentation. Wiele innych przykładów jest dostępnych na GitHub. W przypadku pytań skontaktuj się z nami za pośrednictwem forum.

Zobacz też