คุณเคยสงสัยหรือไม่ว่าจะค้นหาไฟล์จำนวนมากได้อย่างง่ายดายหรือจัดการกับความท้าทายในการค้นหาภายในไฟล์ในโฟลเดอร์ต่างๆ ได้อย่างไร? บทความนี้มีคำตอบที่คุณกำลังมองหา มาดำดิ่งสู่โลกแห่งการค้นหาข้อความและสำรวจวิธีการค้นหาข้อความหรือวลีต่างๆ ในไฟล์ต่างๆ ในโฟลเดอร์ต่างๆ โดยใช้ C#

C# API สำหรับการสแกนข้อความข้ามไฟล์และโฟลเดอร์

ตอนนี้ เราจะใช้ GroupDocs.Search for .NET API เพื่อสำรวจข้อความจำนวนมากภายในไฟล์ที่มีรูปแบบหลากหลายทั่วทั้งโฟลเดอร์ ไลบรารีนี้ช่วยให้เราสามารถสแกนข้อความในรูปแบบไฟล์ที่หลากหลายอย่างเป็นระบบ เช่น เอกสาร Word, สเปรดชีต, การนำเสนอ, ไฟล์ PDF, ไฟล์มาร์กอัป, eBooks, ข้อความอีเมล, เอกสาร One Note และไฟล์เก็บถาวร ZIP สำหรับรายการเชิงลึกของรูปแบบไฟล์ที่รองรับ โปรดดู เอกสารประกอบที่ครอบคลุม

คุณมีตัวเลือกในการรับ DLL หรือตัวติดตั้ง MSI จาก ส่วนการดาวน์โหลด หรือคุณสามารถติดตั้ง API ลงในแอปพลิเคชัน .NET ของคุณโดยใช้ NuGet

PM> Install-Package GroupDocs.Search

ค้นหาข้อความหลายรายการในไฟล์ข้ามโฟลเดอร์โดยใช้ C#

ทำตามขั้นตอนเหล่านี้เพื่อทำการค้นหาข้อความในหลายไฟล์ภายในหลายโฟลเดอร์โดยใช้ C# และสร้างไฟล์เอาต์พุต HTML ที่ไฮไลต์สำหรับแต่ละเอกสารที่พบ

  • สร้างวัตถุ ดัชนี ด้วยเส้นทางโฟลเดอร์ดัชนีที่ระบุ
  • สร้างดัชนีโฟลเดอร์เอกสารหลักโดยใช้วิธีเพิ่ม
  • กำหนดคำค้นหาด้วยคำหรือวลีหลายคำ
  • ดำเนินการสแกนข้อความโดยใช้วิธีการค้นหาและจัดเก็บผลลัพธ์
  • ทำซ้ำผ่านผลการค้นหา:
    • ดึงข้อมูลเอกสารที่พบแต่ละฉบับโดยใช้วิธี GetFoundDocument
    • ดึงหรือพิมพ์ข้อมูลไฟล์สำหรับเอกสารที่พบ
    • ตั้งค่า OutputAdapter สำหรับรูปแบบและเส้นทางที่ต้องการ
    • สร้าง Highlighter สำหรับเอกสาร
    • ไฮไลต์และส่งออกผลการค้นหาไปยังไฟล์ HTML โดยใช้วิธีไฮไลต์
// ค้นหาข้อความในหลายไฟล์ในรูปแบบไฟล์ต่าง ๆ ภายในหลายโฟลเดอร์โดยใช้ C#

// การสร้างดัชนีและจัดทำดัชนีเอกสารจากโฟลเดอร์ที่ระบุ
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// ค้นหาเอกสารที่มีคำว่า 'น้ำ' หรือ 'ไม่ใช่' หรือวลี 'Lorem ipsum'
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// กำลังพิมพ์ผลลัพธ์
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // เน้นผลลัพธ์การค้นหา
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.Highlight(document, highlighter); // Generating HTML formatted text with highlighted occurrences
}

โค้ดด้านบนช่วยให้คุณค้นหาข้อความที่ต้องการในหลายไฟล์ และสร้างไฟล์เอาต์พุต HTML ที่ไฮไลต์สำหรับเอกสารแต่ละฉบับที่พบ

ผลลัพธ์การค้นหาข้อความที่เน้นในรูปแบบ HTML

การพิมพ์ผลลัพธ์การค้นหาข้อความ

จากผลลัพธ์ของคำค้นหา คุณสามารถแยกข้อมูลเกี่ยวกับเอกสารที่พบเพิ่มเติมได้

// กำลังพิมพ์ผลลัพธ์
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);

        // การพิมพ์คำที่พบ
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
        // การพิมพ์วลีที่พบ
        if (field.TermSequences != null)
        {
            for (int k = 0; k < field.TermSequences.Length; k++)
            {
                string sequence = string.Join(" ", field.TermSequences[k]);
                Console.WriteLine("\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]);
            }
        }
    }
}

ต่อไปนี้คือผลลัพธ์ของการพิมพ์ผลการค้นหาด้านบนที่ได้รับจากไฟล์ DOCX, PDF และ TXT:

Documents: 3
Total occurrences: 141
	Document: Lorem ipsum.docx
	Occurrences: 101
		Field: filename
		Occurrences: 101
			lorem ipsum		1
		Field: content
		Occurrences: 101
			non			94
			lorem ipsum		6
	Document: Lorem ipsum.pdf
	Occurrences: 1
		Field: filename
		Occurrences: 1
			lorem ipsum		1
	Document: English.txt
	Occurrences: 39
		Field: content
		Occurrences: 39
			water			39

รหัสที่สมบูรณ์

นี่คือโค้ด C# ที่สมบูรณ์ซึ่งค้นหาสตริงข้อความและวลีโดยรวมในไฟล์และโฟลเดอร์ต่างๆ:

// ค้นหาข้อความในหลายไฟล์ในรูปแบบไฟล์ต่าง ๆ ภายในหลายโฟลเดอร์โดยใช้ C#

// การสร้างดัชนีและจัดทำดัชนีเอกสารจากโฟลเดอร์ที่ระบุ
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// ค้นหาเอกสารที่มีคำว่า 'น้ำ' หรือ 'ไม่ใช่' หรือวลี 'Lorem ipsum'
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// กำลังพิมพ์ผลลัพธ์
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // เน้นผลลัพธ์การค้นหา
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.Highlight(document, highlighter); // Generating HTML formatted text with highlighted occurrences

    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);

        // การพิมพ์คำที่พบ
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
        // การพิมพ์วลีที่พบ
        if (field.TermSequences != null)
        {
            for (int k = 0; k < field.TermSequences.Length; k++)
            {
                string sequence = string.Join(" ", field.TermSequences[k]);
                Console.WriteLine("\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]);
            }
        }
    }
}

การได้รับใบอนุญาตฟรีหรือการทดลองใช้ฟรี

ใบอนุญาตฟรี

รับ ใบอนุญาตชั่วคราวฟรี เพื่อสำรวจห้องสมุดนี้โดยไม่มีข้อจำกัด

ทดลองฟรี

คุณสามารถ ดาวน์โหลดรุ่นทดลองใช้ฟรี ได้จากส่วนการดาวน์โหลด

.NET API สำหรับการค้นหาภายในไฟล์และโฟลเดอร์

บทสรุป

ในบทความนี้ เราได้ตรวจสอบการสแกนข้อความเพื่อค้นหาข้อความต่างๆ ในไฟล์จำนวนมากจากหลายโฟลเดอร์โดยใช้ C# เริ่มต้นด้วยคำค้นหา เราได้สำรวจภายในไฟล์และโฟลเดอร์ต่างๆ โดยเน้นคำหรือวลีที่ค้นหาในไฟล์ HTML ที่เกี่ยวข้อง

สำหรับรายละเอียดที่ครอบคลุมเกี่ยวกับ API แนะนำให้ผู้อ่านดู เอกสารประกอบ

หากมีคำถามหรือพูดคุยเพิ่มเติมสามารถส่งไปที่ ฟอรั่ม ได้โดยตรง

ดูสิ่งนี้ด้วย