การค้นหาแบบคลุมเครือโดยใช้ C# .NET
  • คุณไม่ทราบว่ามีการใช้สีหรือการสะกดสีใดในเอกสาร
  • กำลังค้นหา “John” แต่อาจสะกดว่า “Jon” หรืออาจเป็น “Jhon”
  • ค้นหา “USA” เมื่อผู้ใช้ป้อน “USA”
  • คำหรือวลีที่คุณกำลังมองหาอาจมี “ความผิดพลาด” โอ๊ะโอ เป็น “ความผิดพลาด” อีกครั้ง

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

ไลบรารีการค้นหา C# Fuzzy

สำหรับ Fuzzy Search เราจะใช้ GroupDocs.Search for .NET API ซึ่งช่วยให้มีความอดทนในการสะกดได้ในระดับหนึ่ง ทำให้มีประสิทธิภาพในการรองรับความหลากหลายของภาษาในภูมิภาค เช่น ระหว่างภาษาอังกฤษแบบอังกฤษและแบบอเมริกัน

ไลบรารีนี้ช่วยให้เราสามารถค้นหาข้อความโดยทางโปรแกรมในรูปแบบไฟล์ที่หลากหลาย เช่น เอกสาร Word (DOC, DOCX), สเปรดชีต (XLS, XLSX), การนำเสนอ (PPT, PPTX), ไฟล์ PDF, มาร์กอัป (HTML, XML) Markdown (MD), eBooks (EPUB, CHM, FB2), ข้อความอีเมล (MSG, EML), เอกสาร OneNote และไฟล์ ZIP

หากต้องการค้นหาไฟล์ทุกประเภทที่คุณสามารถใช้งานได้ โปรดดู เอกสารประกอบ

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

มาค้นหาแบบคลุมเครือในไฟล์โดยใช้ C#

ทำตามขั้นตอนเหล่านี้เพื่อทำการค้นหาแบบคลุมเครือในไฟล์หลายรูปแบบไฟล์ต่างๆ ภายในโฟลเดอร์ที่ใช้ C#:

  • สร้าง ดัชนี โดยระบุเส้นทางโฟลเดอร์
  • เพิ่มเส้นทางโฟลเดอร์พาเรนต์สำหรับไดเร็กทอรีการค้นหาไปยังดัชนีที่สร้างขึ้น
  • กำหนดคำค้นหา
  • เปิดใช้งาน Fuzzy Search โดยเปิดใช้งานตัวเลือก
  • ตั้งค่าระดับความคล้ายคลึงกันในอัลกอริธึมฟัซซี่ตามต้องการ
  • ดำเนินการค้นหาโดยใช้วิธีการค้นหาเพื่อรับผลการค้นหา
  • ตอนนี้คุณสามารถทำซ้ำใน SearchResults เพื่อสร้างหรือพิมพ์ผลลัพธ์ตามที่คุณต้องการ

การค้นหาแบบคลุมเครือในโค้ด C# ที่กล่าวถึงด้านล่างจะค้นหาการจับคู่โดยประมาณของข้อความค้นหาที่กำหนดในไฟล์ทั้งหมดทั่วทั้งโฟลเดอร์ย่อยทั้งหมด โดยมีความทนทานต่อข้อผิดพลาด 20% ในการสะกด

// Fuzzy ค้นหาหลายไฟล์ในหลาย ๆ โฟลเดอร์โดยใช้ C#

// การสร้างโฟลเดอร์ดัชนีและเพิ่มโฟลเดอร์ของเอกสารลงไป
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");

SearchOptions options = new SearchOptions();
options.FuzzySearch.Enabled = true; // Enabling the fuzzy search
options.FuzzySearch.FuzzyAlgorithm = new SimilarityLevel(0.8);

string query = "nulla"; // search approximate matches of the provided query  
SearchResult result = index.Search(query, options);

ในที่นี้ ระดับความคล้ายคลึงถูกตั้งค่าเป็น 0.8 เช่น การจับคู่ 80% ซึ่งสอดคล้องกับความทนทานต่อข้อผิดพลาด 20% คุณสามารถปรับระดับความอดทนได้โดยปรับระดับความคล้ายคลึงกันในโค้ด

ด้านล่างนี้เป็นผลการค้นหาแบบคลุมเครือที่คุณสามารถรับได้จากโค้ดด้านบน มันค่อนข้างง่าย อย่างไรก็ตาม รหัสการพิมพ์จะมีให้ในบทความนี้ด้วย

Query: nulla
 Documents: 2
 Occurrences: 135

     Document: Lorem ipsum.docx
     Occurrences: 132
         Field: content
         Occurrences: 132
             nulla               98
             nullam              34

     Document: EnglishText.txt
     Occurrences: 3
         Field: content
         Occurrences: 3
             dull                1
             full                1
             fully               1

การพิมพ์ผลการค้นหา

รหัส C# ต่อไปนี้มีสองวิธีในการนำเสนอผลการค้นหาของคุณ

  • ไฮไลท์การแข่งขันโดยประมาณทั้งหมด
  • พิมพ์ผลลัพธ์ในรูปแบบที่อ่านและวิเคราะห์ได้
// เน้นและพิมพ์ผลการค้นหาสำหรับเอกสารทั้งหมดโดยใช้ C#
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, indexFolder + "/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);

    Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\t\tField: " + field.FieldName);
        Console.WriteLine("\t\tOccurrences: " + document.OccurrenceCount);
        // การพิมพ์คำที่พบ
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
    Console.WriteLine("===========================================");
}

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

ใบอนุญาตฟรี

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

ทดลองฟรี

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

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

บทสรุป

ในบทความนี้ เราได้พิจารณาแนวทางการเขียนโปรแกรม C# เพื่อความมหัศจรรย์ของการค้นหาแบบ Fuzzy เพื่อค้นหาคำที่ตรงกันโดยประมาณทั้งหมด แต่มีความทนทานต่อข้อผิดพลาดในระดับหนึ่ง คุณลักษณะนี้ทำให้การค้นหาแบบคลุมเครือมีประสิทธิภาพในการรองรับความหลากหลายของภาษาในภูมิภาค เช่น ระหว่างภาษาอังกฤษแบบอังกฤษและแบบอเมริกัน ข้อความที่พิมพ์ผิด รูปแบบชื่อ และการจับคู่การออกเสียง

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

ข้อสงสัยหรือการสนทนาเพิ่มเติมสามารถส่งตรงไปที่ ฟอรั่ม


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