Niedawno rozmawialiśmy o tym, jak uzyskać wszystkie synonimy dowolnego słowa. Byłoby wspaniale, gdybyśmy mogli zlokalizować te synonimy w wielu różnych dokumentach. W tym artykule zobaczymy, jak wyszukiwać dowolne słowo i jego synonimy w wielu plikach za pomocą Javy.

Oto tematy omówione poniżej:

Java API - Szukaj synonimów w wielu plikach

GroupDocs.Search prezentuje API Java GroupDocs.Search for Java. Umożliwia wyszukiwanie słów i ich synonimów w wielu różnych plikach w określonym folderze. Obsługuje długą listę różnych formatów plików i różne techniki wyszukiwania Niektóre z tych funkcji są wymienione poniżej i możesz ich używać w połączeniu, aby osiągnąć swój cel:

  • Wyszukiwanie logiczne
  • Wyszukiwanie z uwzględnieniem wielkości liter
  • Zaznacz wyniki wyszukiwania
  • Wyszukiwanie homofonów
  • Wyszukiwanie fraz
  • Wyszukiwanie wyrażeń regularnych
  • Szukaj według kawałkó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.8</version> 
</dependency>

Znajdź synonimy w wielu plikach za pomocą Java

Przejdźmy szybko do wyszukiwania synonimów w plikach. Poniższe kroki pokazują, jak wyszukiwać synonimy (słowa o podobnym znaczeniu) w plikach w folderze przy użyciu języka Java:

  • Zdefiniuj folder indeksu, folder dokumentu i zapytanie (słowo do wyszukania).
  • Utwórz indeks, używając zdefiniowanego folderu indeksu, używając klasy Indeks.
  • Dodaj folder dokumentów do indeksu.
  • Włącz wyszukiwanie synonimów za pomocą SearchOptions.
  • Wywołaj metodę search klasy Index i przekaż zapytanie z opcjami wyszukiwania.
  • Wydrukuj podsumowanie, korzystając z właściwości pobranej klasy SearchResult.

Poniższy kod źródłowy pokazuje, jak znaleźć wszystkie synonimy w plikach przy użyciu języka Java:

// Wyszukuj synonimy w wielu plikach i folderach przy użyciu języka Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// Tworzenie indeksu w określonym folderze
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Tworzenie obiektu opcji wyszukiwania
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// Wyszukaj słowo „robić”
// Oprócz słowa „make” wyszukiwane będą również synonimy „do, get, have,…”
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

Poniżej przedstawiono dane wyjściowe powyższego kodu:

Query: **make**
Documents: 3
Word & Synonym Occurrences: 44 

Z wyników wyszukiwania uzyskanych w powyższym kroku możesz uzyskać informacje dotyczące każdego słowa i synonimu wyszukiwania. Poniższe kroki przedstawiają szczegółowe wyniki po uzyskaniu wszystkich synonimów i liczby ich wystąpień w każdym dokumencie:

  • Najpierw wykonaj wyszukiwanie, aby uzyskać SearchResult.
  • Przejrzyj wynik wyszukiwania, aby pracować z każdym FoundDocument.
  • Wydrukuj odpowiednie właściwości każdego znalezionego dokumentu.
  • Teraz wyodrębnij, a następnie przejrzyj FoundDocumentField w każdym znalezionym dokumencie.
  • Każde pole FoundDocumentField zawiera swoje terminy, wystąpienia i inne właściwości. Użyj odpowiedniego gettera.

Poniższy kod źródłowy wyświetla wynik wyszukiwania synonimów wraz z liczbą wystąpień każdego wyszukiwanego terminu w Javie.

// Drukowanie wyników wyszukiwania synonimów w języku Java
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

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

  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // Drukowanie znalezionych terminów
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
            }
        }
    }
}

Poniżej przedstawiono dane wyjściowe powyższego kodu:

Query: **make**
Documents: 2
Total occurrences: 22

Document: C:/documents/sample.docx
Occurrences: 13
    Field: content
    Occurrences: 13
        **make**  -  2
        **have**  -  1
        **get**  -  2
        **do**  -  8
- - - - - - - - - - - - - - - - 
Document: C:/documents/sample.txt
Occurrences: 11
    Field: content
    Occurrences: 11
        **make**  -  1
        **have**  -  2
        **get**  -  1
        **do**  -  7
- - - - - - - - - - - - - - - - 
Document: C:/documents/sample.pdf
Occurrences: 20
    Field: content
    Occurrences: 20
        **make**  -  2
        **have**  -  2
        **get**  -  2
        **do**  -  14 

Wyszukaj synonimy i wyniki drukowania w języku Java — kompletny kod

Połączmy powyższe dwa kroki, więc oto pełny kod źródłowy. Po pierwsze, znajduje wszystkie synonimy zgodnie z podanym zapytaniem. Następnie drukuje wszystkie wystąpienia każdego synonimu w każdym dokumencie w Javie.

// Wyszukuj synonimy w wielu plikach i folderach przy użyciu języka Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// Tworzenie indeksu w określonym folderze
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Tworzenie obiektu opcji wyszukiwania
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// Wyszukaj słowo „robić”
// Oprócz słowa „make” wyszukiwane będą również synonimy „do, get, have,…”
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

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

  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // Drukowanie znalezionych terminów
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
            }
        }
    }
}

Uzyskaj bezpłatną licencję API

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

Wniosek

Podsumowując, omówiliśmy, jak wyszukiwać dowolne słowo wraz z jego synonimem w wielu dokumentach przy użyciu języka Java. Co najważniejsze, teraz możesz spróbować stworzyć własną aplikację Java do wyszukiwania, taką jak GroupDocs.Search App.

Dowiedz się więcej o interfejsie Java Search Automation API z dokumentacji. Aby poznać te funkcje, wypróbuj przykłady z repozytorium GitHub. Zachęcamy do kontaktu z nami w przypadku jakichkolwiek pytań za pośrednictwem forum.

Zobacz też