Wyszukiwanie rozmyte przy użyciu języka Java

Wyszukiwanie rozmyte pomaga znaleźć w danych treści, które są w pewnym stopniu podobne, a nie dokładnie takie same. Jest to bardzo przydatne, gdy występuje niewielka ilość błędów literowych, błędów ortograficznych lub różnic w danych. W tym artykule omówiono metodę wyszukiwania rozmytego w języku Java w celu znalezienia plików rozproszonych po folderach.

Oto kilka przykładów opracowania przykładowej zawartości wyszukiwania rozmytego:

  • Możesz nie mieć pewności, czy w dokumencie użyto pisowni „kolor” czy „kolor”.
  • Szukając słowa „John”, można je zapisać jako „Jon” lub być może „Jhon”.
  • Próbuję znaleźć „USA”, nawet jeśli ktoś wpisze „USA”
  • Jeśli popełnisz „błąd”, och, czekaj, to właściwie jest „błąd”.

Rozwiązaniem na znalezienie takich treści jest Fuzzy Search.

Biblioteka wyszukiwania rozmytego w Javie

Do wyszukiwania rozmytego w Javie użyjemy interfejsu API GroupDocs.Search for Java. Interfejs API charakteryzuje się dużą elastycznością i zapewnia dostosowywalny stopień tolerancji błędów. Ta funkcja jest przydatna w przypadku odmian językowych, takich jak brytyjski i amerykański angielski, oraz literówek.

Dzięki tej bibliotece można przeprowadzić wyszukiwanie rozmyte w szerokim zakresie formatów plików. Wsparcie nie ogranicza się tylko do dokumentów Word (DOC, DOCX), arkuszy kalkulacyjnych (XLS, XLSX), prezentacji (PPT, PPTX), plików PDF, języków znaczników (HTML, XML), Markdown (MD), e-booków (EPUB, CHM, FB2), e-maile (MSG, EML), notatki OneNote, a nawet archiwa ZIP.

Jeśli chcesz poznać wszystkie typy plików, jakie obsługuje ta magia, po prostu zajrzyj do dokumentacji.

Aby rozpocząć, możesz pobrać interfejs API z sekcji pobierania lub po prostu dodać najnowsze repozytorium i konfiguracje Mavena zależności bezpośrednio do swoich aplikacji Java.

Przeprowadźmy wyszukiwanie rozmyte w plikach przy użyciu języka Java

Wykonaj poniższe kroki, aby przeprowadzić wyszukiwanie rozmyte w wielu plikach o różnych formatach w folderach przy użyciu języka Java:

  1. Zacznij od utworzenia Indeksu przy użyciu folderu, w którym znajdują się Twoje pliki.
  2. Dodaj ścieżkę głównego folderu do indeksu.
  3. Podaj zapytanie, które chcesz wyszukać.
  4. Włącz magię Fuzzy Search, aby rozumiała drobne błędy.
  5. Ustaw poziom podobieństwa w algorytmie rozmytym.
  6. Wykonaj wyszukiwanie przy użyciu metody wyszukiwania, aby uzyskać wyniki wyszukiwania.
  7. Teraz możesz przeglądać SearchResults, aby utworzyć lub wydrukować wynik, jak chcesz.

W poniższym kodzie Java program szuka podobnej zawartości, o którą prosiłeś we wszystkich plikach i podfolderach. Jest tolerancyjny na błędy ortograficzne, do 25% błędów. Jeśli zajrzysz do kodu, zobaczysz, że poziom podobieństwa jest ustawiony na 0,75, co odpowiada dopasowaniu 75%. Jeśli chcesz doprecyzować wyszukiwanie, po prostu zmień poziom podobieństwa w kodzie.

// Rozmyte wyszukiwanie wielu plików w wielu folderach przy użyciu języka Java

// Utworzenie folderu indeksu i dodanie do niego folderu dokumentu
Index index = new Index("path/indexing-folder-path");
index.add("path/parent-folder");

SearchOptions options = new SearchOptions();
options.getFuzzySearch().setEnabled(true); // Enabling the fuzzy search
options.getFuzzySearch().setFuzzyAlgorithm(new SimilarityLevel(0.75));

String query = "nulla"; // search approximate matches of the provided query  
SearchResult result = index.search(query, options);

Po uruchomieniu kodu otrzymasz listę pobranych wyników wyszukiwania rozmytego. Jeżeli chcesz dowiedzieć się jak wydrukować wyniki wyszukiwania, czytaj dalej ten artykuł.

Query: nulla
 Documents: 2
 Occurrences: 135

     Document: Lorem ipsum.docx
     Occurrences: 132
         Field: content
         Occurrences: 132
             nulla               98
             nullam              34

     Document: EnglishText.txt
     Occurrences: 3
         Field: content
         Occurrences: 3
             dull                1
             full                1
             fully               1

Drukowanie wyników wyszukiwania

Poniższy kod Java udostępnia dwa sposoby prezentowania wyników wyszukiwania.

  • Podświetl wszystkie przybliżone dopasowania.
  • Wydrukuj wyniki w czytelnym i możliwym do analizy formacie
// Zaznacz i wydrukuj wyniki wyszukiwania dla wszystkich dokumentów korzystających z języka Java
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
    FoundDocument document = result.getFoundDocument(i);
  
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "path/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.highlight(document, highlighter);
 
    System.out.println("\tDocument: " + document.getDocumentInfo().getFilePath());
    System.out.println("\tOccurrences: " + document.getOccurrenceCount());
    for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\t\tField: " + field.getFieldName());
        System.out.println("\t\tOccurrences: " + field.getOccurrenceCount());

        // Drukuję znalezione terminy
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
            }
        }
    }
}

Uzyskanie bezpłatnej licencji lub bezpłatnej wersji próbnej

Darmowa licencja

Uzyskaj licencję tymczasową za darmo, aby móc przeglądać tę bibliotekę bez ograniczeń.

Bezpłatny okres próbny

Możesz pobrać bezpłatną wersję próbną z sekcji pobierania.

Interfejs API Java do wyszukiwania w plikach i folderach

Wniosek

W tym artykule omówiliśmy programowy sposób wyszukiwania rozmytego w języku Java. Pomaga znaleźć przybliżone pasujące słowa, które są w pewnym stopniu podobne, nawet jeśli występują drobne błędy. Ta funkcja jest przydatna w przypadku różnic między brytyjskim i amerykańskim angielskim, literówek, zmian imion i podobnych dźwięków w słowach.

Więcej informacji na temat interfejsu API można znaleźć w dokumentacji.

Jeśli masz pytania lub chcesz porozmawiać więcej, udaj się na forum.


Zobacz też