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