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.
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
- Zoek volledige text
- Voer een zoekopdracht uit in Java
- Markeer zoekresultaten
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>
Zoeken in volledige tekst met Java
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");
Voer een zoekopdracht uit in Java
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.
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.
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.