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

หลังจากนี้ คุณสามารถใช้เทคนิคการค้นหาต่างๆ เพื่อค้นหาข้อความในเอกสารประมวลผลคำ, สเปรดชีต, งานนำเสนอ, ไฟล์ HTML, PDF eBook, ข้อความอีเมล, ไฟล์ ZIP และไฟล์อื่นๆ อีกมากมาย

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

ค้นหาข้อความแบบเต็ม

หัวข้อต่อไปนี้ครอบคลุมด้านล่าง:

.NET API สำหรับการค้นหาข้อความ

GroupDocs.Search for .NET เป็น API การค้นหาส่วนหลังที่อนุญาตให้ค้นหาข้อความแบบเต็มและสามารถรวมเข้ากับแอปพลิเคชัน .NET ใดๆ โดยไม่ต้องพึ่งพาเครื่องมือของบุคคลที่สามหรือซอฟต์แวร์ ช่วยให้คุณ ค้นหาเอกสารได้หลายรูปแบบ ในแอปพลิเคชันของคุณ

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

PM> Install-Package GroupDocs.Search

การค้นหาข้อความแบบเต็มโดยใช้ C#

มีสองขั้นตอนหลักในการดำเนินการหรือใช้การค้นหาข้อความแบบเต็ม

  • การทำดัชนี
  • ทำการค้นหา

การทำดัชนี

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

ดัชนีคืออะไร?

ดัชนีมีข้อความที่สแกนของเอกสารทั้งหมด ดังนั้น เมื่อคุณจะทำการค้นหา (ค้นหาคำค้นหาเฉพาะ) เฉพาะดัชนีเท่านั้นที่ถูกอ้างอิง แทนที่จะเป็นข้อความของเอกสารต้นฉบับ

การสร้างดัชนี

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

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

เมื่อจัดทำดัชนีเอกสารแล้ว ดัชนีก็พร้อมที่จะจัดการกับคำค้นหา ต่อไปนี้เป็นเทคนิคการค้นหาบางอย่างที่สามารถทำได้โดยใช้ GroupDocs.Search for .NET:

  • การค้นหาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
  • ค้นหานิพจน์ทั่วไป
  • ค้นหาวลี
  • การค้นหาแบบเหลี่ยมเพชรพลอย
  • ค้นหาคำพ้องความหมาย
  • การค้นหาสัญลักษณ์แทน

ทำการค้นหาใน C#

เริ่มต้นด้วยกรณีการใช้งาน หากเรามีเอกสารหลายฉบับ (Word, PDF, Excel และ HTML) และเราต้องการใช้คำค้นหาเฉพาะเจาะจง (คำค้นหา “วิดีโอ”) บนเอกสารเหล่านั้น

ต่อไปนี้เป็นขั้นตอนในการค้นหาข้อความในเอกสารหลายฉบับภายในโฟลเดอร์:

  • เลือกโฟลเดอร์เอกสารต้นทางและโฟลเดอร์ดัชนี
  • เตรียมสตริงแบบสอบถาม
  • สร้าง ดัชนี โดยใช้โฟลเดอร์ดัชนี
  • เพิ่มโฟลเดอร์เอกสารต้นฉบับลงในดัชนี
  • ทำการค้นหาโดยใช้เมธอด Search Index class
  • สำรวจและค้นหาคุณสมบัติของเอกสารแต่ละรายการ

ซอร์สโค้ดต่อไปนี้ค้นหาข้อความโดยใช้ 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);

// สำรวจแต่ละเอกสารของผลการค้นหา
foreach (FoundDocument document in result)
{
    Console.WriteLine("Document Path : " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurance : " + document.OccurrenceCount);
}

เราจะได้เส้นทางของเอกสารและจำนวนคำค้นหาที่เกิดขึ้นในเอกสารทั้งหมดที่มีอยู่ในโฟลเดอร์เอกสาร นี่คือภาพหน้าจอเพื่อให้เห็นภาพ

เอาต์พุตข้อความค้นหาแบบเต็ม

เน้นผลการค้นหาข้อความใน C#

ตอนนี้มาทำการค้นหาข้อความเดียวกัน แต่คราวนี้เราจะเน้นเหตุการณ์ทั้งหมดที่ตรงกับข้อความค้นหา

ขั้นตอนต่อไปนี้แสดงวิธีเน้นข้อความในผลการค้นหา:

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

โค้ดต่อไปนี้สร้างเอาต์พุต HTML พร้อมผลการค้นหาที่ไฮไลต์โดยใช้ C#

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) พร้อมไฮไลต์ข้อความค้นหา/คำ ด้านล่างนี้เป็นเอาต์พุต HTML ที่เน้นของไฟล์ DOCX

เน้นผลการค้นหาข้อความแบบเต็มในเนื้อหา

รับใบอนุญาต API ฟรี

คุณสามารถ รับใบอนุญาตชั่วคราวได้ฟรี เพื่อใช้ API โดยไม่มีข้อจำกัดในการประเมิน

บทสรุป

ในบทความนี้ เราได้เรียนรู้การค้นหาข้อความภายในเอกสารหลายๆ โฟลเดอร์โดยใช้ C# นอกจากนี้ เรายังกล่าวถึงวิธีการเน้นข้อความของผลการค้นหาในรูปแบบ HTML โดยทางโปรแกรม

คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ API โดยใช้ เอกสารประกอบ มีตัวอย่างอีกมากมายที่ GitHub สำหรับข้อสงสัย ติดต่อเราผ่านทาง ฟอรัม

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