Laten we, voordat we in details treden, een overzicht krijgen van de full-text zoektechniek. Zoeken in volledige tekst is in feite een geavanceerdere manier om een tekst/query te doorzoeken in een verzameling documenten. Deze aanpak vindt snel alle instanties van een term en werkt door tekstindexen te gebruiken. In dit artikel leren we hoe we programmatisch de volledige tekst in documenten kunnen doorzoeken met behulp van C#.

Hierna kunt u verschillende zoektechnieken implementeren om tekst te doorzoeken in tekstverwerkingsdocumenten, spreadsheets, presentaties, HTML-bestanden, PDF-eBooks, e-mailberichten, ZIP-archieven en vele andere bestanden.

Een van de voorbeelden van implementatie van full-text zoeken is in tekstverwerkers en teksteditors. Het helpt u om overal in het document een zin of woord te vinden.

Zoek volledige text

De volgende onderwerpen komen hieronder aan bod:

.NET API voor tekstzoeken

GroupDocs.Search for .NET is een back-end-zoek-API die full-text zoeken mogelijk maakt en kan worden geïntegreerd in elke .NET-toepassing zonder enige tool van derden of softwareafhankelijkheid. Hiermee kunt u zoeken in een groot aantal documentindelingen in uw toepassingen.

U kunt de DLL’s of het MSI-installatieprogramma downloaden van de downloadsectie of de API in uw .NET-toepassing installeren via NuGet.

PM> Install-Package GroupDocs.Search

Zoeken in volledige tekst met C#

Er zijn twee hoofdstappen om een volledige tekstzoekopdracht uit te voeren of te implementeren.

  • Indexeren
  • Zoekopdracht uitvoeren

Indexeren

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.

Wat is een index?

Een index bevat gescande tekst van alle documenten. Wanneer u een zoekopdracht gaat uitvoeren (een specifieke zoekopdracht doorzoeken), wordt daarom alleen naar de index verwezen in plaats van naar de tekst van de originele documenten.

Aanmaken van indexen

Een index kan in het geheugen of op een schijf worden gemaakt. De index die in het geheugen is gemaakt, kan niet worden opgeslagen nadat u uw programma hebt afgesloten. Een index die op de schijf is gemaakt, kan daarentegen in de toekomst worden geladen om verder te werken. Het volgende voorbeeld laat zien hoe u een index op een schijf maakt.

Index index = new Index("indexPath/FolderName/");

Wanneer documenten zijn geïndexeerd, is de index klaar om de zoekopdrachten te verwerken. Hieronder volgen enkele zoektechnieken die kunnen worden uitgevoerd met GroupDocs.Search for .NET:

  • Hoofdlettergevoelig zoeken
  • Zoeken naar reguliere expressies
  • Zin zoeken
  • Gefacetteerd zoeken
  • Synoniem zoeken
  • Wildcard zoeken

Zoekopdracht uitvoeren in C#

Beginnend met een use-case. Als we meerdere documenten hebben (Word, PDF, Excel en HTML) en we willen er een specifieke zoekopdracht (zoekterm “video”) op uitvoeren.

Hieronder volgen de stappen voor het uitvoeren van tekstzoekopdrachten op meerdere documenten in een map:

  • Bepaal de map met brondocumenten en de indexmap.
  • Bereid de queryreeks voor.
  • Maak Index met behulp van de indexmap.
  • Voeg de map met brondocumenten toe aan de index.
  • Voer een zoekopdracht uit met behulp van de Search-methode Index-klasse.
  • Doorkruis en zoekresultaten voor de eigenschappen van elk document.

De volgende broncode voert een tekstzoekopdracht uit met behulp van C# op alle documenten van de verstrekte map.

// Zoek Querytekst in alle documenten van de opgegeven map in C#
string indexFolder =  @"indexPath/GroupDocs/index/";
string documentsFolder = @"documentPath/GroupDocs/source/";
string query = "video";

// Index maken in de opgegeven map en documentenmap toevoegen aan Index
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// Zoeken in index
SearchResult result = index.Search(query);
Console.WriteLine("Documents found: " + result.DocumentCount);

// Doorloop elk document van het zoekresultaat
foreach (FoundDocument document in result)
{
    Console.WriteLine("Document Path : " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurance : " + document.OccurrenceCount);
}

We krijgen het documentpad en het aantal keren dat de zoekterm voorkomt in alle documenten die beschikbaar zijn in de documentenmap. Hier is de screenshot om te visualiseren.

Volledige zoektekstuitvoer

Markeer tekstzoekresultaten in C#

Laten we nu dezelfde tekstzoekopdracht uitvoeren, maar deze keer markeren we alle instanties die overeenkomen met de zoekopdracht.

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

  • Bereid de queryreeks voor.
  • Maak Index met behulp van het indexmappad.
  • Voeg de map met brondocumenten toe aan de index.
  • Doorzoek de documentmap met de methode Zoeken.
  • Maak de Markeerstift terwijl u door de zoekresultaten bladert.
  • Gebruik de methode Highlight van de klasse Index om de zoekresultaten te markeren.

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

string indexFolder =    @"indexPath/GroupDocs/index/";
string documentFolder = @"documentPath/GroupDocs/source/";
string query = "draw";

// Maak een index in de opgegeven map en voeg de documentenmap toe aan Index
Index index = new Index(indexFolder);
index.Add(documentFolder);

// Zoek het gevraagde woord op
SearchResult result = index.Search(query);

// Markeer alle gebeurtenissen in de tekst
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
                    
    string path = indexFolder + "Highlighted-"+ i +".html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); 
    Highlighter highlighter = new HtmlHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);
}

Als uitvoer krijgen we meerdere HTML-bestanden. Elk bestand toont de inhoud van een ander document (bijv. excel.xlsx, source.docx, target.docx) met gemarkeerde zoekterm/woord. Hieronder vindt u de gemarkeerde HTML-uitvoer van een DOCX-bestand.

Markeer volledige tekstzoekresultaten in inhoud

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 in meerdere documenten van een map te doorzoeken met behulp van C#. Verder hebben we besproken hoe u de tekst van zoekresultaten in HTML-indeling programmatisch kunt markeren.

Meer informatie over de API vindt u in documentatie. Veel meer voorbeelden zijn beschikbaar op GitHub. Neem voor vragen contact met ons op via het forum.

Zie ook