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