Tìm kiếm toàn văn tài liệu

Chúng tôi thường cần một API tìm kiếm toàn văn bản cho phép các ứng dụng của chúng tôi tìm kiếm thông qua các tài liệu để biết thông tin cụ thể được chỉ định dưới dạng truy vấn tìm kiếm văn bản. Các tài liệu có thể ở bất kỳ định dạng nào như Word (Doc, Docx), PDF, HTML, EPUB, Bảng tính (XLS, XLSX), Bản trình bày (PPT, PPTX), hình ảnh và video.

GroupDocs.Search là API tìm kiếm toàn văn bản mạnh mẽ cho phép bạn tìm kiếm qua hơn 70 định dạng tài liệu trong các ứng dụng của mình. Để có thể tìm kiếm ngay lập tức trên hàng nghìn tài liệu, chúng phải được thêm vào chỉ mục.

Tại sao nên sử dụng GroupDocs.Search với tư cách là Nhà phát triển?

  • Không cần phần mềm bổ sung để tìm kiếm trong các tài liệu có định dạng được hỗ trợ.
  • Rất nhiều tùy chọn lập chỉ mục và tìm kiếm được cung cấp để đáp ứng mọi yêu cầu.
  • Nhiều lựa chọn loại tìm kiếm có sẵn trong các truy vấn dạng văn bản hoặc đối tượng.
  • Hiệu suất tìm kiếm và lập chỉ mục cao đạt được nhờ các thuật toán và cấu trúc dữ liệu độc đáo, tối ưu hóa và thực thi đa luồng.
  • Nhiều cách hiển thị kết quả tìm kiếm trong văn bản của tài liệu được hỗ trợ.

Vui lòng xem bài viết Giới thiệu về Công cụ Tìm kiếm để biết vị trí của API GroupDocs.Search trong việc phân loại các công cụ tìm kiếm.

Cài đặt

GroupDocs.Search for .NET được lưu trữ trên NuGet và có thể dễ dàng cài đặt bằng Trình quản lý gói NuGet. Ngoài ra, bạn có thể tải xuống DLL của API từ phần Tải xuống.

Tìm kiếm thông qua tài liệu văn phòng bằng C#

Các bước sau giải thích cách tìm kiếm từ hoặc cụm từ trong nhiều tài liệu (Word, Excel, PDF và các định dạng tài liệu khác).

  • Tạo một chỉ mục mới: Trước hết, bạn cần tạo một chỉ mục. Một chỉ mục có thể được tạo trong bộ nhớ hoặc trên đĩa. Không thể lưu chỉ mục được tạo trong bộ nhớ sau khi thoát khỏi chương trình của bạn. Ngược lại, một chỉ mục được tạo trên đĩa có thể được tải trong tương lai để tiếp tục hoạt động. Chi tiết về cách tạo chỉ mục được mô tả trong phần Tạo chỉ mục.
  • Theo dõi các sự kiện lập chỉ mục: Sau khi tạo chỉ mục, bạn cần thêm tài liệu vào chỉ mục để lập chỉ mục. Lập chỉ mục tài liệu có thể thành công hoặc không thành công vì nhiều lý do, chẳng hạn như do lỗi đọc từ đĩa hoặc do có mật khẩu để truy cập tài liệu. Để nhận thông tin về lỗi lập chỉ mục, bạn có thể đăng ký sự kiện ErrorOccurred. Để làm việc với các sự kiện, hãy xem phần Tìm kiếm sự kiện chỉ mục.
  • Chỉ mục tài liệu: Việc lập chỉ mục tài liệu có thể được thực hiện đồng bộ hoặc không đồng bộ. Lập chỉ mục đồng bộ có nghĩa là một chuỗi đã bắt đầu quá trình lập chỉ mục sẽ bận cho đến khi hoạt động hoàn tất. Tuy nhiên, thường xuyên hơn, cần thực hiện lập chỉ mục không đồng bộ, với khả năng thực thi các tác vụ khác trong chuỗi đã khởi chạy thao tác. Mô tả chi tiết về tất cả các khía cạnh của quy trình lập chỉ mục được cung cấp trong phần Lập chỉ mục.
  • Thực hiện tìm kiếm: Khi tài liệu được lập chỉ mục, chỉ mục sẵn sàng xử lý các truy vấn tìm kiếm. Các loại truy vấn tìm kiếm sau đây được hỗ trợ: đơn giản, mờ, phân biệt chữ hoa chữ thường, boolean, phrasal, faceted, with wildcards, v.v. Mô tả các truy vấn tìm kiếm thuộc nhiều loại khác nhau được trình bày trong phần Tìm kiếm.
  • Sử dụng kết quả tìm kiếm: Khi tìm kiếm hoàn tất, bạn cần diễn giải kết quả bằng cách nào đó. Kết quả có thể được biểu thị bằng một danh sách đơn giản các tài liệu được tìm thấy hoặc các từ và cụm từ được tìm thấy có thể được đánh dấu trong văn bản của tài liệu. Để biết thêm thông tin về cách xử lý kết quả tìm kiếm, hãy xem Kết quả tìm kiếm.
string indexFolder = @"/Users/muhammadsohailismail/MyIndex/"; // Specify the path to the index folder
string documentsFolder = @"/Users/muhammadsohailismail/MyDocuments/"; // Specify the path to a folder containing documents to search

// a) Create new index or
// b) Open existing index
Index index = new Index(indexFolder);

// c) Subscribe to index events
index.Events.ErrorOccurred += (sender, args) =>
{
    Console.WriteLine(args.Message); // Writing error messages to the console
};

// d) Add files synchronously
index.Add(documentsFolder); // Synchronous indexing documents from the specified folder

// f) Perform search
string query = "Worthy"; // Specify a search query
SearchResult result = index.Search(query); // Searching in the index

// g) Use search results
// Printing the result
Console.WriteLine("Documents found: " + result.DocumentCount);
Console.WriteLine("Total occurrences found: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
    Console.WriteLine("\\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\\tOccurrences: " + document.OccurrenceCount);
}

// Highlight occurrences in text
if (result.DocumentCount > 0)
{
    FoundDocument document = result.GetFoundDocument(0); // Getting the first found document
    string path = @"/Users/muhammadsohailismail/Output/Highlighted.html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); // Creating the output adapter to a file
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the highlighter object
    index.Highlight(document, highlighter); // Generating output HTML formatted document with highlighted search results

    Console.WriteLine();
    Console.WriteLine("Generated HTML file can be opened with Internet browser.");
    Console.WriteLine("The file can be found by the following path:");
    Console.WriteLine(Path.GetFullPath(path));
}

Đoạn mã trên tạo đầu ra sau và tệp HTML.

Tìm kiếm trong các trường tài liệu bằng C#

Tìm kiếm theo khía cạnh đang lọc kết quả tìm kiếm bằng cách đặt tên trường tài liệu hợp lệ để tìm kiếm. Tìm kiếm theo khía cạnh cho phép bạn chỉ tìm kiếm trong một số trường tài liệu nhất định, chẳng hạn như chỉ trong trường nội dung hoặc trong trường tên tệp. Một ví dụ tìm kiếm theo khía cạnh đơn giản được trình bày bên dưới với các truy vấn ở dạng văn bản và đối tượng.

string indexFolder = @"c:\\MyIndex\\";
string documentsFolder = @"c:\\MyDocuments\\";
 
// Creating an index in the specified folder
Index index = new Index(indexFolder);
 
// Indexing documents from the specified folder
index.Add(documentsFolder);
 
// Search in the content field with text query
SearchResult result1 = index.Search("content: Einstein");
 
// Search in the content field with object query
SearchQuery wordQuery = SearchQuery.CreateWordQuery("Einstein");
SearchQuery fieldQuery = SearchQuery.CreateFieldQuery(CommonFieldNames.Content, wordQuery);
SearchResult result2 = index.Search(fieldQuery);

Sử dụng các trường định dạng cụ thể

Đối với mỗi định dạng tài liệu, có các trường tiêu chuẩn có thể có trong các tài liệu thuộc loại này. Thư viện cung cấp các lớp sau chứa các hằng số có tên của các trường tài liệu tiêu chuẩn: EpubFieldNames, FictionBookFieldNames, MailFieldNames, PresentationFieldNames, SpreadsheetFieldNames , WordsFieldNames.

Ngoài ra còn có các trường có thể có trong bất kỳ loại tài liệu nào. Tên của các trường như vậy được trình bày trong lớp CommonFieldNames.

Một ví dụ về việc sử dụng tên trường tiêu chuẩn của tài liệu được trình bày trong ví dụ sau.

string indexFolder = @"c:\\MyIndex\\";
string documentsFolder = @"c:\\MyDocuments\\";
 
// Creating an index in the specified folder
Index index = new Index(indexFolder);
 
// Indexing documents from the specified folder
index.Add(documentsFolder);
 
// Search in the content field with text query
string query1 = WordsFieldNames.Company + ": Dycum";
SearchResult result1 = index.Search(query1);
 
// Search in the content field with object query
SearchQuery wordQuery = SearchQuery.CreateWordQuery("Dycum");
SearchQuery fieldQuery = SearchQuery.CreateFieldQuery(WordsFieldNames.Company, wordQuery);
SearchResult result2 = index.Search(fieldQuery);

Thông tin chi tiết về tìm kiếm thuộc tính được trình bày trên trang Tìm kiếm thuộc tính.

Sự kết luận

Bài viết này đã giải thích cách tìm kiếm thông qua các tài liệu (DOCX, PDF, Excel, tệp Văn bản) để biết thông tin cụ thể trong C#. Nó cũng giải thích cách tìm kiếm trong các trường tài liệu. GroupDocs.Search chứa một số tính năng khác, vui lòng kiểm tra tài liệu để tìm hiểu thêm về nó.