เพิ่มเอกสารไปยังดัชนีสำหรับการค้นหาแบบไม่แยกแยะตัวพิมพ์ใหญ่‑เล็กใน Java
เมื่อคุณต้องการ case insensitive search java ที่ค้นหาข้อมูลได้อย่างแม่นยำโดยไม่สนใจว่าผู้ใช้พิมพ์อย่างไร กุญแจสำคัญคือการเพิ่มเอกสารไปยังดัชนีพร้อมกับทำให้ข้อความเป็นมาตรฐาน ในบทแนะนำนี้เราจะอธิบายการตั้งค่า GroupDocs.Search สำหรับ Java เพื่อให้เอกสารทุกไฟล์ที่คุณทำดัชนีถูกแปลงเป็นตัวพิมพ์เล็กโดยอัตโนมัติ (หรือแปลงในรูปแบบอื่น) ระหว่างการทำดัชนี ทำให้ผลลัพธ์การค้นหาแบบไม่แยกแยะตัวพิมพ์ใหญ่‑เล็กได้โดยไม่ต้องมีตรรกะเพิ่มเติมในขั้นตอนการค้นหา
คำตอบสั้น
- “add documents to index” หมายถึงอะไร? หมายถึงการโหลดไฟล์ต้นทางเข้าสู่โครงสร้างข้อมูลที่สามารถค้นหาได้ เพื่อให้สามารถสืบค้นได้ในภายหลัง.
- ทำไมต้องใช้การแทนที่อักขระ? มันทำให้ทุกอักขระเป็นมาตรฐาน—โดยทั่วไปเป็นตัวพิมพ์เล็ก—เพื่อให้การค้นหาไม่สนใจความแตกต่างของตัวพิมพ์ใหญ่‑เล็กโดยอัตโนมัติ.
- ต้องการไลเซนส์หรือไม่? การทดลองใช้ฟรีสามารถใช้สำหรับการพัฒนา; จำเป็นต้องมีไลเซนส์เต็มสำหรับการใช้งานในสภาพแวดล้อมการผลิต.
- ต้องการเวอร์ชัน Java ใด? Java 8 หรือใหม่กว่า; ไลบรารีนี้มุ่งเป้าไปที่ Java 11+ เพื่อประสิทธิภาพที่ดีที่สุด.
- ฉันสามารถสลับไปใช้การค้นหาแบบแยกแยะตัวพิมพ์ใหญ่‑เล็กเมื่อจำเป็นได้หรือไม่? ได้—ตัวเลือกการค้นหาช่วยให้คุณเปิด/ปิดการแยกแยะตัวพิมพ์ใหญ่‑เล็กตามแต่ละคำค้น.
“add documents to index” คืออะไรใน GroupDocs.Search?
โหลดไฟล์ต้นทางของคุณ (PDF, DOCX, TXT ฯลฯ) ไปยังดัชนีที่สามารถค้นหาได้ เพื่อให้เครื่องมือสามารถดึงข้อมูลได้อย่างรวดเร็ว การเพิ่มเอกสารไปยังดัชนีจะทำการวิเคราะห์แต่ละไฟล์ ดึงข้อความธรรมดาออกมา และจัดเก็บในโครงสร้างข้อมูลที่ปรับแต่งเพื่อให้การค้นหาแบบเร็ว ๆ ทำได้
ทำไมต้องเปิดใช้งานการแทนที่อักขระระหว่างการทำดัชนี?
การแทนที่อักขระจะเปลี่ยนแต่ละอักขระให้เป็นค่าที่กำหนดไว้ล่วงหน้า—โดยส่วนใหญ่เป็นตัวพิมพ์เล็ก—ในระหว่างการสร้างดัชนี สิ่งนี้ทำให้การเปลี่ยนแปลงของตัวพิมพ์ใหญ่‑เล็ก, เครื่องหมายสำเนียง, หรือสัญลักษณ์เฉพาะภาษาต่าง ๆ ไม่ส่งผลต่อผลลัพธ์การค้นหา โดยการทำให้ข้อความเป็นมาตรฐานในขั้นตอนการทำดัชนี เครื่องมือจะสามารถจับคู่คำค้นกับชุดโทเคนที่สอดคล้องกัน ทำให้พฤติกรรมการค้นหาแบบไม่แยกแยะตัวพิมพ์ใหญ่‑เล็กเร็วและเชื่อถือได้โดยไม่ต้องประมวลผลเพิ่มเติมในแต่ละการค้นหา
ข้อกำหนดเบื้องต้น
- GroupDocs.Search for Java เวอร์ชัน 25.4 หรือใหม่กว่า (ไลบรารีรองรับไฟล์รูปแบบกว่า 30 แบบและสามารถทำดัชนีเอกสารหลายร้อยหน้าโดยไม่ต้องโหลดไฟล์ทั้งหมดเข้าสู่หน่วยความจำ).
- Java Development Kit (JDK) เวอร์ชัน 8 หรือใหม่กว่า ติดตั้งแล้ว.
- ความคุ้นเคยพื้นฐานกับ Maven (หรือความสามารถในการเพิ่ม JAR ด้วยตนเอง).
การตั้งค่า GroupDocs.Search สำหรับ Java
การตั้งค่า Maven
Add the GroupDocs repository and dependency to your pom.xml:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/search/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>25.4</version>
</dependency>
</dependencies>
ดาวน์โหลดโดยตรง
หากคุณไม่ต้องการใช้ Maven ให้ดาวน์โหลด JAR ล่าสุดจากเว็บไซต์อย่างเป็นทางการ: GroupDocs.Search for Java releases.
การรับไลเซนส์
- Free Trial – ดาวน์โหลดไลเซนส์ทดลองเพื่อเริ่มทดลองใช้งาน.
- Temporary License – ขอไลเซนส์ทดสอบระยะยาวจากพอร์ทัลของ GroupDocs.
- Full License – ซื้อไลเซนส์สำหรับการใช้งานจริงเมื่อพร้อมเปิดใช้งาน.
การเริ่มต้นพื้นฐาน (สร้างดัชนี)
The following snippet creates an index folder and enables character replacements:
import com.groupdocs.search.Index;
import com.groupdocs.search.IndexSettings;
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/CharacterReplacementDuringIndexing";
IndexSettings settings = new IndexSettings();
settings.setUseCharacterReplacements(true);
Index index = new Index(indexFolder, settings);
คู่มือการใช้งาน
เปิดใช้งานการแทนที่อักขระในการตั้งค่าดัชนี
การเปิดใช้งานฟีเจอร์นี้บอกให้เครื่องมือทำการแทนที่อักขระระหว่างการทำดัชนี ซึ่งเป็นขั้นตอนหลักสำหรับพฤติกรรมการค้นหาแบบไม่แยกแยะตัวพิมพ์ใหญ่‑เล็ก.
ขั้นตอนที่ 1: กำหนดค่า IndexSettings
IndexSettings เป็นอ็อบเจ็กต์การกำหนดค่าที่ควบคุมวิธีการจัดเก็บและประมวลผลข้อความของดัชนี โดยการตั้งค่า useCharacterReplacements เป็น true จะเปิดการแปลงเป็นตัวพิมพ์เล็กอัตโนมัติ (หรือแมปกำหนดเองใด ๆ ที่คุณระบุ).
import com.groupdocs.search.Index;
import com.groupdocs.search.IndexSettings;
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/CharacterReplacementDuringIndexing";
// Create an instance of IndexSettings and enable character replacement.
IndexSettings settings = new IndexSettings();
settings.setUseCharacterReplacements(true);
// Initialize the index with these settings.
Index index = new Index(indexFolder, settings);
กำหนดค่าการแทนที่อักขระ
แมปแต่ละอักขระไปยังรูปแบบตัวพิมพ์เล็กที่สอดคล้อง (หรือแมปกำหนดเองใด ๆ ที่คุณต้องการ).
ขั้นตอนที่ 2: กำหนดและเพิ่มคู่การแทนที่
พจนานุกรมการแทนที่เก็บคู่เช่น 'A' → 'a', 'É' → 'e' เป็นต้น การเพิ่มคู่เหล่านี้ก่อนทำดัชนีทำให้ทุกโทเคนถูกทำให้เป็นมาตรฐาน.
import com.groupdocs.search.dictionaries.CharacterReplacementPair;
// Access existing replacements and clear them.
index.getDictionaries().getCharacterReplacements().clear();
// Create an array for new replacements.
CharacterReplacementPair[] characterReplacements = new CharacterReplacementPair[Character.MAX_VALUE + 1];
for (int i = 0; i < characterReplacements.length; i++) {
char originalChar = (char) i;
char replacementChar = Character.toLowerCase(originalChar);
characterReplacements[i] = new CharacterReplacementPair(originalChar, replacementChar);
}
// Add these replacements to the index's dictionary.
index.getDictionaries().getCharacterReplacements().addRange(characterReplacements);
การทำดัชนีเอกสาร
เมื่อดัชนีพร้อมแล้ว คุณสามารถ add documents to index จากโฟลเดอร์ใดก็ได้.
ขั้นตอนที่ 3: เพิ่มเอกสารสำหรับทำดัชนี
GroupDocs.Search จะสแกนไดเรกทอรีเป้าหมาย ดึงข้อความจากแต่ละประเภทไฟล์ที่รองรับ ใช้แผนที่การแทนที่ และเขียนโทเคนลงในที่เก็บดัชนี.
import com.groupdocs.search.Index;
String documentFolder = "YOUR_DOCUMENT_DIRECTORY";
// Initialize the index and add documents.
Index index = new Index(indexFolder, settings);
index.add(documentFolder);
ทำการค้นหาแบบแยกแยะตัวพิมพ์ใหญ่‑เล็ก (ทางเลือก)
ขั้นตอนที่ 4: ดำเนินการค้นหาแบบแยกแยะตัวพิมพ์ใหญ่‑เล็ก
SearchOptions กำหนดพฤติกรรมของคำค้น เช่น การเปิด/ปิดการแยกแยะตัวพิมพ์ใหญ่‑เล็ก ให้ควบคุมการค้นหาได้อย่างละเอียด.SearchOptions.setUseCaseSensitiveSearch(true) บังคับให้เครื่องมือพิจารณาตัวอักษรพิมพ์ใหญ่และพิมพ์เล็กเป็นต่างกันในคำค้นเฉพาะ ทำให้พฤติกรรมเริ่มต้นแบบไม่แยกแยะตัวพิมพ์ใหญ่‑เล็กถูกแทนที่.
import com.groupdocs.search.Index;
import com.groupdocs.search.SearchOptions;
import com.groupdocs.search.results.SearchResult;
String query = "Promotion";
SearchOptions options = new SearchOptions();
options.setUseCaseSensitiveSearch(true);
// Perform the search.
Index index = new Index(indexFolder, settings);
SearchResult result = index.search(query, options);
การประยุกต์ใช้งานจริง
- Marketing Campaigns – ทำให้ชื่อผลิตภัณฑ์เป็นมาตรฐานเพื่อให้ทีมขายสามารถค้นหาแหล่งข้อมูลได้โดยไม่ต้องกังวลเรื่องตัวพิมพ์.
- Customer Support – เสริมกล่องค้นหาของศูนย์ช่วยเหลือให้คืนบทความที่ถูกต้องไม่ว่าผู้ใช้พิมพ์ “login” หรือ “Login”.
- E‑commerce Catalogs – ทำให้ผู้ซื้อสามารถค้นหารายการได้ไม่ว่าพิมพ์ชื่อผลิตภัณฑ์อย่างไร ช่วยเพิ่มอัตราการแปลง.
การพิจารณาด้านประสิทธิภาพ
- Organize Source Files – โครงสร้างโฟลเดอร์ที่เป็นระเบียบช่วยลดเวลาการสแกนในขั้นตอน add documents to index.
- Monitor Memory – การทำดัชนีข้อมูลจำนวนมากอาจใช้ RAM มาก; การประมวลผลไฟล์เป็นชุดละ 500 – 1 000 รายการช่วยควบคุมการใช้ heap.
- Asynchronous Indexing – หากรองรับ ให้ทำการทำดัชนีบนเธรดพื้นหลังเพื่อให้ UI ตอบสนองและหลีกเลี่ยงการบล็อกการทำงานของผู้ใช้.
ปัญหาทั่วไปและการแก้ไขข้อผิดพลาด
| อาการ | สาเหตุที่เป็นไปได้ | วิธีแก้ |
|---|---|---|
| ไม่มีผลลัพธ์คืนสำหรับคำที่รู้จัก | การแทนที่อักขระไม่ได้เปิดใช้งาน | ตรวจสอบว่า settings.setUseCharacterReplacements(true) ถูกตั้งค่าและแผนที่การแทนที่มีอักขระที่ต้องการอยู่. |
| ข้อผิดพลาด Out‑of‑memory ระหว่างการทำดัชนี | ทำดัชนีไฟล์ขนาดใหญ่จำนวนมากพร้อมกัน | ทำดัชนีเป็นชุดเล็กลงหรือเพิ่ม heap ของ JVM (-Xmx4g). |
| การค้นหาให้ผลลัพธ์แยกแยะตัวพิมพ์ใหญ่‑เล็กโดยไม่คาดคิด | SearchOptions.setUseCaseSensitiveSearch(true) ถูกตั้งค่า | ลบหรือตั้งค่าเป็น false เพื่อให้เป็นพฤติกรรมเริ่มต้นแบบไม่แยกแยะตัวพิมพ์ใหญ่‑เล็ก. |
| เวลาโหลดดัชนีเกินคาดหวัง | โครงสร้างโฟลเดอร์ไม่เหมาะสมหรือไม่ได้ใช้ SSD | จัดระเบียบไฟล์ใหม่, ลบเอกสารที่ไม่ได้ใช้, และเก็บดัชนีบน SSD ที่เร็ว. |
| อักขระพิเศษถูกละเลย | แผนที่การแทนที่ไม่มีรายการ Unicode | เพิ่มการแมปสำหรับอักขระเช่น “é”, “ß”, “ø” ให้เป็นค่าที่ต้องการ. |
คำถามที่พบบ่อย
Q: ฉันจะจัดการกับอักขระพิเศษ (เช่น “é”, “ß”) ระหว่างการทำดัชนีอย่างไร?
A: รวมอักขระเหล่านั้นในแผนที่การแทนที่ของคุณ โดยแมปเป็นค่า ASCII ที่เทียบเท่าหรือคงไว้ตามความต้องการของการค้นหา.
Q: ฉันสามารถจำกัดการแทนที่อักขระให้เฉพาะภาษาหนึ่งได้หรือไม่?
A: ได้. สร้างอาร์เรย์การแทนที่แบบกำหนดเองที่มีเฉพาะอักขระของภาษาที่ต้องการก่อนเพิ่มลงในพจนานุกรม.
Q: ควรทำอย่างไรหากดัชนีใช้เวลานานในการโหลด?
A: ปรับโครงสร้างโฟลเดอร์, ลบไฟล์ที่ไม่จำเป็น, และเก็บดัชนีบน SSD ความเร็วสูง การทำดัชนีแบบเพิ่มส่วนช่วยลดภาระการโหลดได้.
Q: สามารถย้อนกลับการแทนที่อักขระหลังจากทำดัชนีได้หรือไม่?
A: ไม่ได้. การแทนที่ถูกฝังไว้ในข้อมูลที่ทำดัชนีแล้ว; คุณต้องสร้างดัชนีใหม่ด้วยการตั้งค่าใหม่เพื่อเปลี่ยนแปลง.
Q: ฉันจะหาเอกสาร API รายละเอียดเพิ่มเติมได้จากที่ไหน?
A: เอกสารอย่างเป็นทางการและอ้างอิง API มีรายละเอียดครบถ้วน (ดูส่วน Resources ด้านล่าง).
แหล่งข้อมูล
อัปเดตล่าสุด: 2026-07-31
ทดสอบด้วย: GroupDocs.Search 25.4 for Java
ผู้เขียน: GroupDocs