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.
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
- Wyszukiwanie pełnotekstowe
- Wykonaj wyszukiwanie w Javie
- Zaznacz wyniki wyszukiwania
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 pełnotekstowe przy użyciu języka Java
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");
Wykonaj wyszukiwanie w Javie
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.
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.
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.