เคยสงสัยบ้างไหมว่าจะค้นหาไฟล์จำนวนมากได้อย่างราบรื่นหรืออาจนำทางความซับซ้อนในการค้นหาภายในไฟล์จากหลาย ๆ โฟลเดอร์ได้อย่างไร ทุกข้อสงสัยของคุณพบคำตอบได้ที่นี่ บทความนี้เจาะลึกขอบเขตของการสแกนข้อความ โดยนำเสนอวิธีการค้นหาข้อความหรือวลีหลายรายการในไฟล์ต่างๆ ที่กระจายอยู่ในโฟลเดอร์ต่างๆ โดยใช้ Java
Java API สำหรับการสแกนข้อความข้ามไฟล์และโฟลเดอร์
วันนี้เราจะใช้ GroupDocs.Search for Java API เพื่อค้นหาข้อความหลายข้อความภายในไฟล์ที่มีรูปแบบไฟล์ต่างๆ ทั่วทั้งโฟลเดอร์ ไลบรารีนี้ช่วยให้เราสแกนข้อความภายในรูปแบบไฟล์ที่หลากหลายโดยทางโปรแกรมสำหรับเอกสาร Word, สเปรดชีต, การนำเสนอ, ไฟล์ PDF, ไฟล์มาร์กอัป, eBooks, ข้อความอีเมล, เอกสาร One Note และไฟล์เก็บถาวร ZIP เอกสารประกอบให้ รายการรายละเอียดของรูปแบบไฟล์ที่รองรับ
คุณสามารถดาวน์โหลดไฟล์ JAR ได้จาก ส่วนการดาวน์โหลด หรือใช้ [การกำหนดค่า Maven ที่เก็บข้อมูลล่าสุดและการพึ่งพา] ภายในแอปพลิเคชัน Java ของคุณ
ค้นหาข้อความหลายรายการในไฟล์ข้ามโฟลเดอร์โดยใช้ Java
ทำตามขั้นตอนต่อไปนี้เพื่อทำการค้นหาข้อความในหลายไฟล์ภายในหลายโฟลเดอร์โดยใช้ Java และสร้างไฟล์เอาต์พุต HTML ที่ไฮไลต์สำหรับแต่ละเอกสารที่พบ
- สร้างวัตถุ ดัชนี ด้วยเส้นทางโฟลเดอร์ดัชนีที่ระบุ
- สร้างดัชนีโฟลเดอร์เอกสารหลักโดยใช้วิธีการเพิ่ม
- กำหนดคำค้นหาด้วยคำหรือวลีหลายคำ
- ดำเนินการสแกนข้อความโดยใช้วิธีการค้นหาและจัดเก็บผลลัพธ์
- ทำซ้ำผ่านผลการค้นหา:
- เข้าถึงแต่ละเอกสารที่พบโดยใช้เมธอด getFoundDocument
- เข้าถึงหรือพิมพ์ข้อมูลไฟล์สำหรับเอกสารที่พบ
- ตั้งค่า OutputAdapter สำหรับรูปแบบและเส้นทางที่ต้องการ
- สร้าง Highlighter สำหรับเอกสาร
- ไฮไลต์และส่งออกผลการค้นหาไปยังไฟล์ HTML โดยใช้วิธีไฮไลต์
// ค้นหาข้อความในไฟล์หลายไฟล์ในรูปแบบไฟล์ต่าง ๆ ภายในหลายโฟลเดอร์โดยใช้ Java
// การสร้างดัชนีในโฟลเดอร์ที่ระบุ
Index index = new Index("path/for/indexingFolder");
// การทำดัชนีเอกสารจากโฟลเดอร์ที่ระบุ
index.add("path/parent-folder/");
String query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.search(query);
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
FoundDocument document = result.getFoundDocument(i);
System.out.println("====================================");
System.out.println("File Name: " + document.getDocumentInfo().getFilePath());
OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
Highlighter highlighter = new DocumentHighlighter(outputAdapter);
index.highlight(document, highlighter);
}
โค้ดข้างต้นช่วยให้คุณสามารถค้นหาข้อความเฉพาะภายในหลายไฟล์ และสร้างไฟล์เอาต์พุต HTML ที่เน้นสีสำหรับเอกสารแต่ละฉบับที่พบ
การพิมพ์ผลลัพธ์การค้นหาข้อความ
จากผลลัพธ์ของคำค้นหา คุณสามารถแยกข้อมูลเกี่ยวกับเอกสารที่พบเพิ่มเติมได้
// การพิมพ์ผลการค้นหา ===
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
FoundDocument document = result.getFoundDocument(i);
// การพิมพ์ผลการค้นหา ===========
System.out.println("Occurrences: " + document.getOccurrenceCount());
for (FoundDocumentField field : document.getFoundFields()) {
System.out.println("\tField: " + field.getFieldName());
System.out.println("\tOccurrences: " + field.getOccurrenceCount());
// การพิมพ์คำที่พบ
if (field.getTerms() != null) {
for (int k = 0; k < field.getTerms().length; k++) {
System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
}
}
// การพิมพ์วลีที่พบ
if (field.getTermSequences() != null) {
for (int k = 0; k < field.getTermSequences().length; k++) {
String[] terms = field.getTermSequences()[k];
String sequence = "";
for (String term : terms) {
sequence += term + " ";
}
System.out.println("\t\t" + sequence + " - " + field.getTermSequencesOccurrences()[k]);
}
}
}
}
ต่อไปนี้คือผลลัพธ์ของการพิมพ์ผลการค้นหาด้านบนที่ได้รับจากไฟล์ DOCX, PDF และ TXT:
File Name: Lorem ipsum.docx
Occurrences: 101
Field: filename
Occurrences: 1
lorem ipsum - 1
Field: content
Occurrences: 100
non - 94
lorem ipsum - 6
====================================
File Name: Lorem ipsum.pdf
Occurrences: 60
Field: filename
Occurrences: 1
lorem ipsum - 1
Field: content
Occurrences: 59
non - 53
lorem ipsum - 6
====================================
File Name: English.txt
Occurrences: 39
Field: content
Occurrences: 39
water - 39
รหัสที่สมบูรณ์
นี่คือโค้ด Java ที่สมบูรณ์ซึ่งค้นหาสตริงข้อความและวลีโดยรวมในไฟล์และโฟลเดอร์ต่างๆ:
// ค้นหาข้อความในไฟล์หลายไฟล์ในรูปแบบไฟล์ต่าง ๆ ภายในหลายโฟลเดอร์โดยใช้ Java
// การสร้างดัชนีในโฟลเดอร์ที่ระบุ
Index index = new Index("path/for/indexingFolder");
// การจัดทำดัชนีเอกสารจากโฟลเดอร์ที่ระบุ
index.add("path/parent-folder/");
String query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.search(query);
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
FoundDocument document = result.getFoundDocument(i);
System.out.println("====================================");
System.out.println("File Name: " + document.getDocumentInfo().getFilePath());
OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
Highlighter highlighter = new DocumentHighlighter(outputAdapter);
index.highlight(document, highlighter);
// การพิมพ์ผลการค้นหา ===========
System.out.println("Occurrences: " + document.getOccurrenceCount());
for (FoundDocumentField field : document.getFoundFields()) {
System.out.println("\tField: " + field.getFieldName());
System.out.println("\tOccurrences: " + field.getOccurrenceCount());
// การพิมพ์คำที่พบ
if (field.getTerms() != null) {
for (int k = 0; k < field.getTerms().length; k++) {
System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
}
}
// การพิมพ์วลีที่พบ
if (field.getTermSequences() != null) {
for (int k = 0; k < field.getTermSequences().length; k++) {
String[] terms = field.getTermSequences()[k];
String sequence = "";
for (String term : terms) {
sequence += term + " ";
}
System.out.println("\t\t" + sequence + " - " + field.getTermSequencesOccurrences()[k]);
}
}
}
}
การได้รับใบอนุญาตฟรีหรือการทดลองใช้ฟรี
ใบอนุญาตฟรี
หากต้องการสำรวจห้องสมุดนี้โดยไม่มีข้อจำกัด คุณสามารถขอรับ ใบอนุญาตชั่วคราวได้ฟรี
ทดลองฟรี
ดาวน์โหลดรุ่นทดลองใช้ฟรี จากส่วนดาวน์โหลด
บทสรุป
ในบทความนี้ เราเพิ่งจะสำรวจการสแกนข้อความเพื่อค้นหาข้อความหลายรายการในหลายไฟล์จากหลายโฟลเดอร์โดยใช้ Java เริ่มต้นด้วยคำค้นหา เราค้นหาภายในไฟล์และโฟลเดอร์หลายรายการ และเน้นผลลัพธ์ที่พบในไฟล์ HTML ที่เกี่ยวข้อง
สำหรับข้อมูล API โดยละเอียด ขอแนะนำให้ผู้อ่านอ่าน เอกสารประกอบ คำถามและการอภิปรายเพิ่มเติมสามารถนำไปที่ ฟอรัม ที่ให้ไว้