Zoek homofonen in bestanden met behulp van GroupDocs

Synoniemen zijn woorden met een vergelijkbare betekenis, en homofonen klinken hetzelfde, maar verschillen in betekenis of spelling. We hebben geleerd om synoniemen in meerdere documenten te vinden met behulp van Java. Vandaag zullen we in dit artikel zien hoe we homofonen in meerdere documenten kunnen doorzoeken met behulp van Java.

De volgende onderwerpen komen hieronder aan bod:

Java API voor het zoeken naar homofonen

GroupDocs.Search demonstreert de Java API GroupDocs.Search for Java waarmee elk woord en zijn homofonen kan worden gevonden in meerdere bestanden van een specifieke map. Het kan de inhoud doorzoeken van verschillende formaten. Naast het vinden van de homofonen ondersteunt de API vele andere zoektechnieken, waaronder:

  • Hoofdlettergevoelig zoeken
  • Vage zoekopdracht
  • Zin zoeken
  • Reguliere expressies zoeken
  • Synoniem zoeken
  • Zoeken met wildcards

U kunt het JAR-bestand downloaden van de downloadsectie of de nieuwste repository- en afhankelijkheidsconfiguraties Maven gebruiken binnen uw Java-applicaties.

<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>
PM> Install-Package GroupDocs.Search

Vind homofonen in meerdere bestanden in Java

De volgende stappen helpen u bij het zoeken naar homofonen in meerdere bestanden van een map in Java.

  • Definieer de zoekwoordquery, de indexeringsmap en de containermap van uw bestanden.
  • Maak Index met de gedefinieerde indexmap.
  • Voeg de map van het document toe aan de index.
  • Definieer de SearchOptions en schakel de homophoneSearch in met behulp van de setUseHomophoneSearch-methode.
  • Voer de homofonen-zoekopdracht uit met behulp van de zoekmethode.
  • Gebruik indien nodig de eigenschappen van het opgehaalde SearchResult.

De volgende Java-broncode vindt alle homofonen in bestanden van de gedefinieerde map. Verder kunt u ook uw homofoonwoordenboek beheren.

// Zoek homofonen in meerdere bestanden en mappen met behulp van Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "right";

// Een index maken in de opgegeven map
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Een object met zoekopties maken
SearchOptions options = new SearchOptions();
options.setUseHomophoneSearch(true); // Enable Homophone Search

// Zoek op het woord 'juist'
// Naast het woord 'right' wordt ook gezocht naar de homofonen 'rite, write, wright, ...'
SearchResult result = index.search(query, options);

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

De uitvoer van de bovenstaande code is als volgt:

Query: right
Documents: 2
Occurrences: 17

U kunt de homofonen-zoekresultaten gebruiken door de stappen te volgen nadat u de homofonen en hun voorkomen uit elk document hebt opgehaald.

  • Blader door de zoekresultaten.
  • Haal elk FoundDocument op met behulp van de methode getFoundDocument.
  • Gebruik de eigenschappen van elk FoundDocument zoals vereist.
  • Doorloop nu de velden van FoundDocument door FoundDocumentField op te halen.
  • Haal later uit elk FoundDocumentField alle termen en hun voorkomen binnen elk document op.

In het volgende voorbeeld van Java-code worden de zoekresultaten voor homofoons afgedrukt, samen met het aantal keren dat elke gezochte term voorkomt.

// De homofoonzoekresultaten afdrukken in Java
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Homophone Occurrences: " + result.getOccurrenceCount());

// Doorkruis de documenten
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());
  
  // Doorkruis de gevonden velden
  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // Gevonden termen afdrukken
        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]);
            }
        }
    }
}

Het volgende is de uitvoer van het bovenstaande codevoorbeeld.

Query: right
Documents: 2
Total occurrences: 17

Document: C:/documents/sample.docx
Occurrences: 11
    Field: content
    Occurrences: 11
        right             3
        rite               4
        wright           1
        write             3
Document: C:/documents/sample.txt
Occurrences: 6
    Field: content
    Occurrences: 6
        right             4
        write             2

Zoeken naar homofonen en afdrukken van resultaten met behulp van Java - Volledige code

De volgende Java-code combineert de bovenstaande stappen. Aanvankelijk vindt het de homofonen volgens de zoekopdracht en drukt vervolgens alle exemplaren van homofonen af van elk document in de opgegeven map.

// Zoek homofonen in meerdere bestanden en mappen met behulp van Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "right";

// Een index maken in de opgegeven map
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Een object met zoekopties maken
SearchOptions options = new SearchOptions();
options.setUseHomophoneSearch(true); // Enable Homophone Search

// Zoek op het woord 'juist'
// Naast het woord 'right' wordt ook gezocht naar de homofonen 'rite, write, wright, ...'
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Homophone 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());
  
        // Gevonden termen afdrukken
        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]);
            }
        }
    }
}

Conclusie

Tot slot heb je geleerd hoe je met Java de woorden en hun homofonen uit meerdere documenten in een opgegeven map kunt vinden. U kunt proberen uw eigen Java-toepassing te ontwikkelen voor het zoeken naar homofonen met behulp van GroupDocs.Search for Java.

Lees meer over de Java Search Automation API in de documentatie. Om de functies ervan te ervaren, kun je de beschikbare voorbeelden in de GitHub-repository bekijken. Bereik ons voor elke vraag via het forum.

Zie ook