การค้นหาข้อความแบบเต็มของเอกสาร

เรามักต้องการ API การค้นหาข้อความแบบเต็มที่ช่วยให้แอปพลิเคชันของเราสามารถค้นหาเอกสารต่างๆ เพื่อหาข้อมูลเฉพาะที่ระบุเป็นข้อความค้นหา เอกสารสามารถเป็นรูปแบบใดก็ได้ เช่น Word (Doc, Docx), PDF, HTML, EPUB, สเปรดชีต (XLS, XLSX), การนำเสนอ (PPT, PPTX) รูปภาพ และวิดีโอ

GroupDocs.Search คือ API การค้นหาข้อความแบบเต็มที่มีประสิทธิภาพซึ่งช่วยให้คุณค้นหาผ่าน มากกว่า 70 รูปแบบเอกสาร ในแอปพลิเคชันของคุณ เพื่อให้สามารถค้นหาเอกสารหลายพันรายการได้ทันที จะต้องเพิ่มเอกสารเหล่านั้นลงในดัชนี

เหตุใดจึงต้องใช้ GroupDocs.Search ในฐานะนักพัฒนา

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

โปรดตรวจสอบบทความ เกี่ยวกับเครื่องมือค้นหา เพื่อดูว่า GroupDocs.Search API อยู่ในตำแหน่งใดในการจัดประเภทของเครื่องมือค้นหา

การติดตั้ง

GroupDocs.Search for .NET โฮสต์บน NuGet และสามารถติดตั้งได้อย่างง่ายดายโดยใช้ NuGet Package Manager หรือคุณสามารถดาวน์โหลด DLL ของ API ได้จากส่วน ดาวน์โหลด

ค้นหาเอกสาร Office โดยใช้ C#

ขั้นตอนต่อไปนี้จะอธิบายวิธีการค้นหาคำหรือวลีในเอกสารหลายฉบับ (Word, Excel, PDF และรูปแบบเอกสารอื่นๆ)

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

โค้ดด้านบนสร้างผลลัพธ์ต่อไปนี้และ ไฟล์ HTML

ค้นหาในฟิลด์เอกสารโดยใช้ C#

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

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);

การใช้ฟิลด์เฉพาะรูปแบบ

สำหรับรูปแบบเอกสารแต่ละรูปแบบ มีฟิลด์มาตรฐานที่อาจมีอยู่ในเอกสารประเภทนี้ ไลบรารีจัดเตรียมคลาสต่อไปนี้ที่มีค่าคงที่พร้อมชื่อของฟิลด์เอกสารมาตรฐาน: EpubFieldNames, FictionBookFieldNames, MailFieldNames, PresentationFieldNames, SpreadsheetFieldNames , ชื่อฟิลด์คำ.

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

ตัวอย่างของการใช้ชื่อเขตข้อมูลมาตรฐานของเอกสารแสดงอยู่ในตัวอย่างต่อไปนี้

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);

ข้อมูลโดยละเอียดเกี่ยวกับการค้นหาแบบเหลี่ยมเพชรจะแสดงอยู่ในหน้า การค้นหาแบบเหลี่ยมเพชรพลอย

บทสรุป

บทความนี้อธิบายวิธีการค้นหาผ่านเอกสาร (DOCX, PDF, Excel, Text files) สำหรับข้อมูลเฉพาะในภาษา C# นอกจากนี้ยังอธิบายวิธีการค้นหาในช่องเอกสาร GroupDocs.Search มีคุณสมบัติอื่นๆ มากมาย โปรดตรวจสอบ เอกสารประกอบ เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับคุณลักษณะนี้