Zoeken in volledige tekst is een manier om een tekst/vraag binnen een verzameling documenten te doorzoeken. Deze aanpak vindt snel alle instanties van een term/zin en werkt door tekstindexen te gebruiken. In dit artikel leren we hoe we programmatisch full-text in documenten kunnen doorzoeken met behulp van Java.

Zoek volledige text

Hierna kunt u verschillende zoektechnieken implementeren en uw zoekoplossing bouwen voor tekstverwerkingsdocumenten, spreadsheets, presentaties, HTML-bestanden, PDF-bestanden, eBooks, e-mailberichten, ZIP-archieven en vele andere documentindelingen.

De volgende onderwerpen komen hieronder aan bod:

Java API voor zoeken in volledige tekst

GroupDocs.Search biedt een java-API voor zoeken in volledige tekst die in elke toepassing kan worden geïntegreerd zonder enige tool van derden en softwareafhankelijkheid. Hiermee kunt u zoeken in een grote lijst met documentindelingen. Enkele van de zoektechnieken die kunnen worden uitgevoerd met behulp van de API zijn als volgt:

  • Hoofdlettergevoelig zoeken
  • Zoeken naar reguliere expressies
  • Gefacetteerd zoeken
  • Vage zoekopdracht
  • Homofoon zoeken
  • Synoniem zoeken

Downloaden of configureren

U kunt het JAR-bestand downloaden van de downloads-sectie, of gewoon de nieuwste repository- en afhankelijkheidsconfiguraties voor pom.xml van uw maven-gebaseerde Java-applicaties downloaden.

<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>

Er zijn twee stappen om de zoekopdracht uit te voeren in bestanden die in een map zijn opgeslagen.

  • Indexeren
  • Zoekopdracht uitvoeren

Bestanden indexeren met Java

Een index bevat gescande tekst van alle documenten. Wanneer u een zoekopdracht gaat uitvoeren, wordt daarom alleen naar de index verwezen in plaats van naar de tekst van de originele documenten. Om het mogelijk te maken om direct duizenden documenten met dezelfde of verschillende bestandsindelingen te doorzoeken, moet u een index maken en deze documenten eraan toevoegen. Wanneer documenten zijn geïndexeerd, is de index klaar om de zoekopdrachten te verwerken.

De volgende eenvoudige twee regels maken een index en voegen ook de documentenmap toe aan de index.

Index index = new Index("indexingFolderPath");
index.add("documentsFolderPath");

Na het indexeren van meerdere documenten van dezelfde of verschillende formaten zoals (Word, PDF, Excel en HTML), kunnen we verder gaan met het verwerken van een specifieke zoekopdracht (zoekterm “Tekenen”). Hieronder volgen de stappen voor het uitvoeren van tekstzoekopdrachten op meerdere documenten in een map met behulp van Java:

  • Geef de bronmap van documenten en de indexmap op.
  • Maak Index met behulp van de indexmap.
  • Voeg de bronmap toe aan de index.
  • Bereid de queryreeks voor.
  • Voer een zoekopdracht uit met behulp van de methode search van de klasse Index.
  • Doorzoek alle zoekresultaten voor de eigenschappen van elk document.

De volgende broncode voert tekstzoekopdrachten in Java uit op alle documenten van de opgegeven map.

// Zoek gespecificeerde tekst in meerdere PDF-, Word-, Excel-, HTML-documenten in een map met behulp van Java
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath");

// Zoeken in de index naar gespecificeerde tekst
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());
}

We krijgen het documentpad en het aantal keren dat de zoektermen voorkomen in alle documenten met die opgegeven map. Hier is de screenshot voor visualisatie.

Volledige zoektekstuitvoer

Markeer tekstzoekresultaten in Java

Laten we nu dezelfde zoekopdracht in volledige tekst uitvoeren en ook alle instanties markeren die overeenkomen met uw zoekopdracht.

De volgende stappen laten zien hoe u de tekstzoekresultaten kunt markeren:

  • Maak Index aan en voeg de documentenmap toe aan de index.
  • Bereid de queryreeks voor.
  • Doorzoek de documentenmap met behulp van de methode zoeken.
  • Terwijl u de resultaten doorloopt, maakt u de markeerstift met behulp van de HtmlHighlighter.
  • Gebruik de markeermethode om de zoekresultaten te markeren.

De volgende code genereert de HTML-uitvoer met gemarkeerde zoekresultaten met behulp van Java.

// Markeer de volledige tekstzoekresultaten van meerdere documenten in een map in Java
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
}

Als uitvoer krijgen we meerdere HTML-bestanden. Elk bestand toont de inhoud van een apart document (bijv. excel.xlsx, source.docx, target.docx) met gemarkeerde zoektermen/woorden. Hieronder vindt u de gemarkeerde HTML-uitvoer van een DOCX-bestand, TXT-bestand en PDF-bestand verkregen met behulp van de bovenstaande code.

Markeer volledige tekstzoekresultaten in inhoud met behulp van Java

Ontvang een gratis API-licentie

U kunt een gratis tijdelijke licentie krijgen om de API te gebruiken zonder de evaluatiebeperkingen.

Conclusie

In dit artikel hebben we geleerd om tekst te zoeken in meerdere documenten van een map in Java. Verder bespraken we hoe je de tekst van zoekresultaten programmatisch kunt markeren in HTML-indeling voor MS Word-bestanden, TXT-bestanden en PDF-bestanden met behulp van GroupDocs.Search for Java.

U kunt meer te weten komen over de API met behulp van documentatie. Veel meer voorbeelden zijn beschikbaar op GitHub. Neem voor vragen contact met ons op via het forum.

Zie ook