在我們深入細節之前,讓我們先大致了解一下全文搜索技術。全文搜索基本上是一種更高級的搜索文檔集合中的文本/查詢的方法。這種方法可以快速找到術語的所有實例,並且它通過使用文本索引來工作。在本文中,我們將學習如何使用 C# 以編程方式搜索文檔中的全文。

在此之後,您可以實施各種搜索技術來搜索文字處理文檔、電子表格、演示文稿、HTML 文件、PDF 電子書、電子郵件消息、ZIP 存檔和許多其他文件中的文本。

全文搜索實現的示例之一是在文字處理器和文本編輯器中。它可以幫助您在文檔中的任何位置查找短語或單詞。

全文搜索

以下主題涵蓋如下:

用於文本搜索的 .NET API

GroupDocs.Search for .NET 是一個後端搜索 API,它允許全文搜索,並且可以集成到任何 .NET 應用程序中,而無需任何第三方工具或軟件依賴。它允許您在您的應用程序中搜索多種文檔格式

您可以從 下載部分 下載 DLL 或 MSI 安裝程序,或通過 NuGet 在您的 .NET 應用程序中安裝 API。

PM> Install-Package GroupDocs.Search

使用 C# 進行全文搜索

執行或實施全文搜索有兩個主要步驟。

  • 索引
  • 執行搜索

索引

為了能夠即時搜索具有相同或不同文件格式的數千個文檔,您需要創建一個索引並將這些文檔添加到其中。

什麼是索引?

一個索引擁有所有文檔的掃描文本。因此,當您要執行搜索操作(搜索特定查詢)時,只會引用索引,而不是原始文檔的文本。

索引創建

索引可以在內存或磁盤上創建。退出程序後無法保存在內存中創建的索引。相反,在磁盤上創建的索引可能會在將來加載以繼續工作。以下示例顯示如何在磁盤上創建索引。

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

當文檔被索引時,索引就可以處理搜索查詢了。以下是一些可以使用 GroupDocs.Search for .NET 執行的搜索技術:

  • 區分大小寫搜索
  • 正則表達式搜索
  • 短語搜索
  • 分面搜索
  • 同義詞搜索
  • 通配符搜索

在 C# 中執行搜索

從用例開始。如果我們有多個文檔(Word、PDF、Excel 和 HTML)並且我們想要對它們執行特定的搜索查詢(搜索詞“視頻”)。

以下是如何對文件夾中的多個文檔執行文本搜索的步驟:

  • 確定源文件文件夾和索引文件夾。
  • 準備查詢字符串。
  • 使用索引文件夾創建 Index
  • 將源文檔文件夾添加到索引中。
  • 使用 Search 方法 Index 類執行搜索。
  • 遍歷和搜索每個文檔屬性的結果。

以下源代碼使用 C# 對所提供文件夾的所有文檔執行文本搜索。

// 在 C# 中提供的文件夾的所有文檔中搜索查詢文本
string indexFolder =  @"indexPath/GroupDocs/index/";
string documentsFolder = @"documentPath/GroupDocs/source/";
string query = "video";

// 在指定文件夾中創建索引並將文檔文件夾添加到索引中
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// 在索引中搜索
SearchResult result = index.Search(query);
Console.WriteLine("Documents found: " + result.DocumentCount);

// 遍歷Search Result的每一個文檔
foreach (FoundDocument document in result)
{
    Console.WriteLine("Document Path : " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurance : " + document.OccurrenceCount);
}

我們將獲取文檔文件夾中所有可用文檔中的文檔路徑和搜索詞出現次數。這是可視化的屏幕截圖。

完整搜索文本輸出

在 C# 中突出顯示文本搜索結果

現在讓我們執行相同的文本搜索,但這次我們將突出顯示與查詢匹配的所有事件。

以下步驟顯示瞭如何突出顯示文本搜索結果:

  • 準備查詢字符串。
  • 使用索引文件夾路徑創建 Index
  • 將源文檔文件夾添加到索引中。
  • 使用搜索 方法搜索文檔文件夾。
  • 在遍歷搜索結果時,創建 Highlighter
  • 使用 Index 類的 Highlight 方法來突出顯示搜索結果。

以下代碼使用 C# 生成帶有突出顯示搜索結果的 HTML 輸出。

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

// 在指定文件夾中創建索引,並將文檔文件夾添加到索引中
Index index = new Index(indexFolder);
index.Add(documentFolder);

// 搜索查詢詞
SearchResult result = index.Search(query);

// 突出顯示文本中所有出現的地方
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);
}

作為輸出,我們將獲得多個 HTML 文件。每個文件將顯示不同文檔(例如 excel.xlsx、source.docx、target.docx)的內容,並突出顯示搜索詞/詞。下面給出的是 DOCX 文件的突出顯示的 HTML 輸出。

在內容中突出顯示全文搜索結果

獲取免費的 API 許可證

您可以獲得免費的臨時許可證,以便在不受評估限制的情況下使用 API。

結論

在本文中,我們學習了使用 C# 在一個文件夾的多個文檔中搜索文本。此外,我們還討論瞭如何以編程方式突出顯示 HTML 格式的搜索結果文本。

您可以使用 文檔 了解有關 API 的更多信息。 GitHub 中提供了更多示例。如有疑問,請通過論壇 聯繫我們。

也可以看看