การค้นหาแบบคลุมเครือโดยใช้ Java

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

ต่อไปนี้คือตัวอย่างเล็กๆ น้อยๆ เพื่ออธิบายเนื้อหาตัวอย่างการค้นหาที่ไม่ชัดเจนอย่างละเอียด:

  • คุณอาจไม่แน่ใจว่าเอกสารใช้การสะกดคำว่า “สี” หรือ “สี”
  • เมื่อค้นหา “John” จริงๆ แล้วอาจสะกดว่า “Jon” หรือบางทีอาจเป็น “Jhon”
  • พยายามค้นหา “USA” แม้ว่ามีคนพิมพ์ว่า “USA”
  • หากคุณทำ “ผิดพลาด” โอ้ เดี๋ยวก่อน มันเป็น “ความผิดพลาด” จริงๆ

วิธีแก้ปัญหาในการค้นหาเนื้อหาดังกล่าวคือ Fuzzy Search

ไลบรารีการค้นหา Java Fuzzy

หากต้องการค้นหาแบบคลุมเครือใน Java เราจะใช้ API GroupDocs.Search for Java API มีความสามารถในการแสดงความยืดหยุ่นสูงและให้ระดับความทนทานต่อข้อผิดพลาดที่ปรับแต่งได้ ฟีเจอร์นี้เหมาะมากเมื่อต้องรับมือกับรูปแบบภาษาต่างๆ เช่น ภาษาอังกฤษแบบอังกฤษและแบบอเมริกัน และการพิมพ์ผิด

ด้วยไลบรารีนี้ การค้นหาแบบคลุมเครือสามารถทำได้ภายในรูปแบบไฟล์ที่หลากหลาย การสนับสนุนไม่ได้จำกัดอยู่เพียงแค่เอกสาร Word (DOC, DOCX), สเปรดชีต (XLS, XLSX), การนำเสนอ (PPT, PPTX), PDF, ภาษามาร์กอัป (HTML, XML), Markdown (MD), eBooks (EPUB, CHM, FB2) อีเมล (MSG, EML) บันทึกย่อของ OneNote และแม้แต่ไฟล์ ZIP

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

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

มาค้นหาแบบคลุมเครือในไฟล์โดยใช้ Java

ทำตามขั้นตอนเหล่านี้เพื่อทำการค้นหาแบบคลุมเครือในไฟล์หลายรูปแบบไฟล์ต่างๆ ภายในโฟลเดอร์ที่ใช้ Java:

  1. เริ่มต้นด้วยการสร้าง ดัชนี โดยใช้โฟลเดอร์ที่มีไฟล์ของคุณอยู่
  2. เพิ่มเส้นทางโฟลเดอร์หลักลงในดัชนี
  3. ระบุคำค้นหาที่คุณต้องการค้นหา
  4. เปิดใช้ความมหัศจรรย์ของ Fuzzy Search เพื่อให้เข้าใจข้อผิดพลาดเล็กๆ น้อยๆ
  5. ตั้งค่าระดับความคล้ายคลึงกันในอัลกอริทึมฟัซซี่
  6. ดำเนินการค้นหาโดยใช้วิธีการค้นหาเพื่อรับผลการค้นหา
  7. ตอนนี้คุณสามารถสำรวจ SearchResults เพื่อสร้างหรือพิมพ์ผลลัพธ์ตามที่คุณต้องการ

ในโค้ด Java ด้านล่าง โปรแกรมจะค้นหาเนื้อหาที่คล้ายกันซึ่งเป็นประเภทที่คุณขอในไฟล์และโฟลเดอร์ย่อยทั้งหมด สามารถทนต่อการสะกดผิดได้ถึง 25% หากคุณดูโค้ด คุณจะเห็นว่าระดับความคล้ายคลึงถูกตั้งไว้ที่ 0.75 ซึ่งเทียบเท่ากับการจับคู่ 75% หากคุณต้องการปรับแต่งการค้นหา เพียงแค่เปลี่ยนระดับความคล้ายคลึงกันในโค้ด

// Fuzzy ค้นหาไฟล์หลายไฟล์ในหลาย ๆ โฟลเดอร์โดยใช้ Java

// การสร้างโฟลเดอร์ดัชนีและเพิ่มโฟลเดอร์เอกสารลงไป
Index index = new Index("path/indexing-folder-path");
index.add("path/parent-folder");

SearchOptions options = new SearchOptions();
options.getFuzzySearch().setEnabled(true); // Enabling the fuzzy search
options.getFuzzySearch().setFuzzyAlgorithm(new SimilarityLevel(0.75));

String query = "nulla"; // search approximate matches of the provided query  
SearchResult result = index.search(query, options);

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

Query: nulla
 Documents: 2
 Occurrences: 135

     Document: Lorem ipsum.docx
     Occurrences: 132
         Field: content
         Occurrences: 132
             nulla               98
             nullam              34

     Document: EnglishText.txt
     Occurrences: 3
         Field: content
         Occurrences: 3
             dull                1
             full                1
             fully               1

การพิมพ์ผลการค้นหา

โค้ด Java ต่อไปนี้มีสองวิธีในการนำเสนอผลการค้นหาของคุณ

  • ไฮไลท์การแข่งขันโดยประมาณทั้งหมด
  • พิมพ์ผลลัพธ์ในรูปแบบที่อ่านและวิเคราะห์ได้
// เน้นและพิมพ์ผลการค้นหาสำหรับเอกสารทั้งหมดโดยใช้ Java
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
    FoundDocument document = result.getFoundDocument(i);
  
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "path/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.highlight(document, highlighter);
 
    System.out.println("\tDocument: " + document.getDocumentInfo().getFilePath());
    System.out.println("\tOccurrences: " + document.getOccurrenceCount());
    for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\t\tField: " + field.getFieldName());
        System.out.println("\t\tOccurrences: " + field.getOccurrenceCount());

        // การพิมพ์คำที่พบ
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
            }
        }
    }
}

การได้รับใบอนุญาตฟรีหรือการทดลองใช้ฟรี

ใบอนุญาตฟรี

รับ ใบอนุญาตชั่วคราว ฟรีเพื่อสำรวจห้องสมุดนี้โดยไม่มีข้อจำกัด

ทดลองฟรี

คุณสามารถ ดาวน์โหลดรุ่นทดลองใช้ฟรี ได้จากส่วนการดาวน์โหลด

Java API สำหรับการค้นหาภายในไฟล์และโฟลเดอร์

บทสรุป

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

หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับ API โปรดดู เอกสารประกอบ

หากคุณมีคำถามหรือต้องการพูดคุยเพิ่มเติม โปรดไปที่ ฟอรัม


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