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

ผลลัพธ์การค้นหาข้อความที่เน้นในรูปแบบ 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 API สำหรับการค้นหาภายในไฟล์และโฟลเดอร์

บทสรุป

ในบทความนี้ เราเพิ่งจะสำรวจการสแกนข้อความเพื่อค้นหาข้อความหลายรายการในหลายไฟล์จากหลายโฟลเดอร์โดยใช้ Java เริ่มต้นด้วยคำค้นหา เราค้นหาภายในไฟล์และโฟลเดอร์หลายรายการ และเน้นผลลัพธ์ที่พบในไฟล์ HTML ที่เกี่ยวข้อง

สำหรับข้อมูล API โดยละเอียด ขอแนะนำให้ผู้อ่านอ่าน เอกสารประกอบ คำถามและการอภิปรายเพิ่มเติมสามารถนำไปที่ ฟอรัม ที่ให้ไว้

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