Nedávno jsme diskutovali jak získat všechna synonyma jakéhokoli slova. Bylo by skvělé, kdybychom tato synonyma našli v mnoha různých dokumentech. V tomto článku uvidíme, jak pomocí Javy vyhledávat libovolné slovo a jeho synonyma ve více souborech.

Níže jsou uvedena následující témata:

Java API - Hledání synonym ve více souborech

GroupDocs.Search představuje Java API GroupDocs.Search for Java. Umožňuje vyhledávat slova a jejich synonyma v různých více souborech zadané složky. Podporuje dlouhý seznam různých formátů souborů a různé techniky vyhledávání. Některé z těchto funkcí jsou uvedeny níže a můžete je použít v kombinaci k dosažení svého cíle:

  • Booleovské vyhledávání
  • Vyhledávání rozlišující malá a velká písmena
  • Zvýrazněte výsledky hledání
  • Vyhledávání homofonů
  • Hledání frází
  • Hledání regulárních výrazů
  • Vyhledávání podle kousků
  • Synonymum Hledat

Stáhnout nebo Konfigurovat

Soubor JAR si můžete stáhnout z části ke stažení nebo si můžete stáhnout nejnovější úložiště a konfigurace závislostí pro pom.xml vašich Java aplikací založených 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>

Najděte synonyma ve více souborech pomocí Java

Přejděme rychle k vyhledávání synonym v souborech. Následující kroky ukazují, jak vyhledávat synonyma (slova s podobným významem) v souborech ve složce pomocí Java:

  • Definujte složku indexu, složku dokumentu a dotaz (slovo pro vyhledávání).
  • Vytvořte index pomocí definované složky indexu pomocí třídy Index.
  • Přidejte složku dokumentů do rejstříku.
  • Povolte vyhledávání synonym pomocí SearchOptions.
  • Zavolejte metodu search třídy Index a předejte dotaz s možnostmi vyhledávání.
  • Vytiskněte souhrn pomocí vlastností načtené třídy SearchResult.

Následující zdrojový kód ukazuje, jak najít všechna synonyma v souborech pomocí Java:

// Hledání synonym ve více souborech a složkách pomocí Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// Vytvoření indexu v zadané složce
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Vytvoření objektu možností hledání
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// Hledejte slovo 'make'
// Kromě slova 'make' se budou hledat i synonyma '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());

Následuje výstup výše uvedeného kódu:

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

Z výsledků vyhledávání získaných ve výše uvedeném kroku můžete získat informace týkající se každého slova a synonyma vyhledávání. Následující kroky prezentují výsledky podrobně po získání všech synonym a jejich počtu výskytů v každém dokumentu:

  • Nejprve proveďte vyhledávání, abyste získali SearchResult.
  • Projděte výsledek hledání, abyste mohli pracovat s každým FoundDocument.
  • Vytiskněte příslušné vlastnosti každého FoundDocumentu.
  • Nyní extrahujte a projděte FoundDocumentField v každém FoundDocumentu.
  • Každý FoundDocumentField má své termíny, výskyty a další vlastnosti. Použijte příslušný getr.

Následující zdrojový kód zobrazuje výsledek hledání synonym spolu s počtem výskytů každého hledaného výrazu v Java.

// Tisk výsledků hledání synonym v jazyce 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());
  
        // Tisk nalezených termínů
        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]);
            }
        }
    }
}

Následuje výstup výše uvedeného kódu:

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 

Hledejte synonyma a výsledky tisku v Java – kompletní kód

Pojďme spojit výše uvedené dva kroky, takže zde je kompletní zdrojový kód. Nejprve najde všechna synonyma podle zadaného dotazu. Poté vytiskne všechny výskyty každého synonyma v každém dokumentu v Java.

// Hledání synonym ve více souborech a složkách pomocí Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// Vytvoření indexu v zadané složce
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Vytvoření objektu možností hledání
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// Hledejte slovo 'make'
// Kromě slova 'make' se budou hledat i synonyma '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());
  
        // Tisk nalezených termínů
        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]);
            }
        }
    }
}

Získejte bezplatnou licenci API

Můžete získat bezplatnou dočasnou licenci, abyste mohli používat API bez omezení hodnocení.

Závěr

Abychom to shrnuli, diskutovali jsme o tom, jak hledat libovolné slovo spolu s jeho synonymem ve více dokumentech pomocí Java. A co je nejdůležitější, nyní si můžete zkusit vyvinout vlastní Java aplikaci pro vyhledávání stejně jako GroupDocs.Search App.

Další informace o rozhraní Java Search Automation API naleznete v dokumentaci. Chcete-li si funkce vyzkoušet, vyzkoušejte příklady z úložiště GitHub. Neváhejte nás kontaktovat s jakýmkoli dotazem prostřednictvím fóra.

Viz také