ค้นหาตามแอตทริบิวต์ Java ด้วยคู่มือ GroupDocs.Search

ในแอปพลิเคชันที่เน้นเอกสารสมัยใหม่ คุณมักต้องการค้นหาไฟล์ไม่เพียงตามเนื้อหาข้อความเท่านั้น แต่ยังตามเมตาดาต้ากำหนดเอง เช่น แผนก ระดับความลับ หรือวันที่สร้าง Search by attribute java ให้ความสามารถนี้ในคำค้นเดียวที่มีประสิทธิภาพสูง ในบทแนะนำนี้คุณจะได้เห็นวิธีอัปเดตแอตทริบิวต์เป็นชุดบนไฟล์ที่ได้ทำการจัดทำดัชนีแล้ว การแทรกแอตทริบิวต์ระหว่างการทำดัชนี และการสืบค้นเอกสารตามเมตาดาต้าอย่างมีประสิทธิภาพโดยใช้ไลบรารี GroupDocs.Search for Java

คำตอบอย่างรวดเร็ว

  • อะไรคือ “search by attribute java”? มันช่วยให้คุณกรองผลการค้นหาด้วยเมตาดาต้าคีย์‑ค่า ที่แนบกับเอกสารแต่ละรายการที่ทำการจัดทำดัชนี
  • ฉันสามารถแก้ไขแอตทริบิวต์หลังจากทำดัชนีได้หรือไม่? ได้ – ใช้ AttributeChangeBatch เพื่อทำการเปลี่ยนแปลงเป็นชุดโดยไม่ต้องสร้างดัชนีใหม่ทั้งหมด
  • ฉันจะเพิ่มแอตทริบิวต์ระหว่างการทำดัชนีอย่างไร? ลงทะเบียนตัวจัดการสำหรับเหตุการณ์ FileIndexing และตั้งค่าแอตทริบิวต์โดยโปรแกรมสำหรับแต่ละไฟล์
  • ฉันต้องการไลเซนส์หรือไม่? การทดลองใช้ฟรีสามารถใช้งานเพื่อประเมินผลได้; จำเป็นต้องมีไลเซนส์ถาวรสำหรับการใช้งานในสภาพแวดล้อมการผลิต
  • ต้องการเวอร์ชัน Java ใด? แนะนำให้ใช้ Java 8 หรือใหม่กว่า

“search by attribute java” คืออะไร?

Search by attribute java ทำให้คุณสามารถสืบค้นเอกสารโดยอิงเมตาดาต้ากำหนดเอง (แอตทริบิวต์) แทนที่จะเป็นเพียงเนื้อหาข้อความ วิธีนี้ทำให้ชุดผลลัพธ์แคบลงอย่างมาก ลดการจราจรของเครือข่าย และเร่งความเร็วในการตอบสนอง เนื่องจากเอนจินประเมินตัวกรองแอตทริบิวต์ก่อนทำการสแกนข้อความเต็ม

ทำไมต้องใช้การแท็กเมตาดาต้าแบบไดนามิก?

การแท็กเมตาดาต้าแบบไดนามิกทำให้คุณสามารถกำหนด, อัปเดต, และจัดการแอตทริบิวต์กำหนดเองสำหรับเอกสารโดยไม่ต้องทำการจัดทำดัชนีใหม่ ให้การจัดประเภทที่ยืดหยุ่นซึ่งปรับตัวตามกฎธุรกิจที่เปลี่ยนแปลง, ปรับปรุงประสิทธิภาพการค้นหา, และลดความจำเป็นในการย้ายข้อมูลที่มีค่าใช้จ่ายสูงในคลังข้อมูลขนาดใหญ่ ในขณะเดียวกันยังคงรักษาการปฏิบัติตามและความสามารถในการตรวจสอบ

  • Dynamic categorization – รักษาเมตาดาต้าให้สอดคล้องกับกฎธุรกิจที่พัฒนา
  • Faster filtering – ตัวกรองแอตทริบิวต์จะถูกประเมินก่อนการค้นหาข้อความเต็ม, เพิ่มความเร็วในการตอบสนอง
  • Compliance tracking – แท็กเอกสารสำหรับนโยบายการเก็บรักษาหรือข้อกำหนดการตรวจสอบ
  • Batch update attributes – เปลี่ยนแปลงเอกสารหลายรายการในหนึ่งการดำเนินการโดยไม่ต้องทำการจัดทำดัชนีทั้งหมดใหม่

ข้อกำหนดเบื้องต้น

  • Java 8+ (JDK 8 หรือใหม่กว่า)
  • GroupDocs.Search for Java library (ดูการตั้งค่า Maven ด้านล่าง)
  • ความคุ้นเคยพื้นฐานกับคอลเลกชันของ Java และการจัดการข้อยกเว้น

การตั้งค่า GroupDocs.Search สำหรับ Java

การตั้งค่า Maven

เพิ่มรีโพซิทอรีของ GroupDocs และการพึ่งพาในไฟล์ pom.xml ของคุณ:

<repositories>
    <repository>
        <id>groupdocs-releases</id>
        <url>https://repo.groupdocs.com/maven</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>25.4</version>
    </dependency>
</dependencies>

ดาวน์โหลดโดยตรง

หรือคุณสามารถดาวน์โหลดเวอร์ชันล่าสุดจาก GroupDocs.Search for Java releases. หากคุณไม่ต้องการใช้ Maven ให้รับไฟล์ JAR จาก GroupDocs website.

การรับไลเซนส์

  • เริ่มต้นด้วยการทดลองใช้ฟรีเพื่อสำรวจความสามารถ
  • สำหรับการใช้งานต่อเนื่อง, รับไลเซนส์ชั่วคราวหรือเต็มผ่าน license page

การเริ่มต้นพื้นฐาน

// Initialize the search index folder
String indexFolder = "C:/search_index";
Index index = new Index(indexFolder);

// Apply license if you have one
License license = new License();
license.setLicense("C:/licenses/groupdocs.lic");

วิธีแก้ไขแอตทริบิวต์ของเอกสาร (อัปเดตเป็นชุด)

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

Direct answer: ใช้ AttributeChangeBatch เพื่อรวมการเพิ่ม, การลบ, หรือการแทนที่เมตาดาต้าเป็นการดำเนินการแบบอะตอมิกเดียว แล้วทำการคอมมิตชุดนั้นไปยังดัชนี วิธีนี้จะอัปเดตแอตทริบิวต์ของเอกสารหลายรายการในหนึ่งขั้นตอนพร้อมคงดัชนีข้อความเต็มที่มีอยู่

ขั้นตอน 1: เพิ่มเอกสารไปยังดัชนี

index.add("C:/docs/contract1.pdf");
index.add("C:/docs/report2.docx");

ขั้นตอน 2: ดึงข้อมูลเอกสารที่ทำดัชนีแล้ว

DocumentInfo info = index.getDocumentInfo("contract1.pdf");
System.out.println("Current attributes: " + info.getAttributes());

ขั้นตอน 3: อัปเดตแอตทริบิวต์ของเอกสารเป็นชุด

คลาส AttributeChangeBatch จะรวมการแก้ไขแอตทริบิวต์หลายรายการเป็นการดำเนินการแบบอะตอมิกเดียว ลดภาระ I/O และรับประกันความสอดคล้องของดัชนี

AttributeChangeBatch batch = new AttributeChangeBatch();
batch.addAttribute("contract1.pdf", "department", "Legal");
batch.removeAttribute("report2.docx", "confidential");
batch.replaceAttribute("report2.docx", "status", "archived", "active");
index.applyAttributeChanges(batch);

ขั้นตอน 4: ค้นหาด้วยตัวกรองแอตทริบิวต์

SearchOptions options = new SearchOptions();
options.addAttributeFilter("department", "Legal");
SearchResult result = index.search("agreement", options);
System.out.println("Found " + result.getCount() + " legal documents.");

วิธีเพิ่มแอตทริบิวต์ระหว่างการทำดัชนี

การเพิ่มแอตทริบิวต์ระหว่างกระบวนการทำดัชนีทำให้แน่ใจว่าแต่ละเอกสารจะได้รับเมตาดาต้าที่จำเป็นตั้งแต่ต้น ด้วยการจัดการเหตุการณ์ FileIndexing คุณสามารถแนบคู่คีย์‑ค่าให้กับอ็อบเจ็กต์ DocumentInfo แต่ละรายการก่อนที่เอนจินจะประมวลผลไฟล์, รับประกันว่ามีแอตทริบิวต์พร้อมใช้งานอย่างสม่ำเสมอสำหรับการค้นหาต่อไป

Direct answer: สมัครรับเหตุการณ์ FileIndexing ก่อนเพิ่มไฟล์; ในตัวจัดการเหตุการณ์ให้เรียก addAttribute บนวัตถุ DocumentInfo เพื่อแนบคู่คีย์‑ค่า, แล้วให้ดัชนีดำเนินการประมวลผลไฟล์ต่อ

ขั้นตอน 1: สมัครรับเหตุการณ์ FileIndexing

เหตุการณ์ FileIndexing จะถูกเรียกสำหรับแต่ละไฟล์เมื่อเพิ่มเข้าไปในดัชนี, ทำให้คุณสามารถแทรกเมตาดาต้ากำหนดเองได้

index.getEvents().FileIndexing.add(event -> {
    // Example: set department based on folder name
    String folder = new File(event.getFilePath()).getParentFile().getName();
    event.getDocumentInfo().addAttribute("department", folder);
});

ขั้นตอน 2: ทำดัชนีเอกสาร

index.add("C:/incoming/hr/policy.pdf");
index.add("C:/incoming/finance/budget.xlsx");

การประยุกต์ใช้ในเชิงปฏิบัติ

  1. Document management systems – แท็กไฟล์โดยอัตโนมัติเมื่อรับเข้า, ทำให้การนำทางแบบ facet ทำได้ทันที
  2. Large content archives – ผสานตัวกรองแอตทริบิวต์กับการค้นหาข้อความเต็มเพื่อลดเวลาคำค้นจากหลายนาทีเป็นวินาทีในคอลเลกชันหลายกิกะไบต์
  3. Compliance & reporting – กำหนดระยะเวลาการเก็บรักษา, ระดับความลับ, หรือธงตรวจสอบแบบไดนามิกที่สามารถสืบค้นเพื่อการตรวจสอบตามกฎระเบียบ

ข้อควรพิจารณาด้านประสิทธิภาพ

  • Memory management – ตรวจสอบ heap ของ JVM และปรับ -Xmx (เช่น -Xmx4g สำหรับดัชนีที่ใหญ่กว่า 2 GB)
  • Batch processing – รวมการเปลี่ยนแปลงแอตทริบิวต์ด้วย AttributeChangeBatch เพื่อลดการเขียนดิสก์; แบ่งชุดที่ใหญ่กว่า 10 000 การแก้ไขเพื่อหลีกเลี่ยงการหมดเวลาธุรกรรม
  • Library updates – ใช้เวอร์ชันล่าสุดของ GroupDocs.Search; เวอร์ชัน 25.4 เพิ่มความเร็วการประเมินตัวกรองแอตทริบิวต์ 30 % เมื่อเทียบกับ 24.x

ปัญหาทั่วไปและวิธีแก้

ปัญหาสาเหตุวิธีแก้
Attributes ไม่ถูกนำไปใช้ตัวจัดการเหตุการณ์ไม่ได้ลงทะเบียนก่อนทำดัชนีตรวจสอบให้แน่ใจว่า index.getEvents().FileIndexing.add(...) ทำงาน ก่อน คำเรียก index.add(...) ใด ๆ
Search ไม่คืนผลลัพธ์ชื่อแอตทริบิวต์ไม่ตรงกัน (แยกแยะตัวพิมพ์ใหญ่/เล็ก)ใช้ชื่อแอตทริบิวต์ที่ตรงกันอย่างแม่นยำเมื่อสร้างตัวกรอง (createAttribute("main"))
Out‑of‑memory errors บนชุดข้อมูลขนาดใหญ่การเปลี่ยนแปลงมากเกินไปในชุดเดียวแบ่งการอัปเดตขนาดใหญ่เป็น AttributeChangeBatch ย่อย (เช่น 5 000 เอกสารต่อชุด)
License ไม่ถูกจดจำใช้ JAR ทดลองโดยไม่ได้ตั้งค่าไฟล์ไลเซนส์เรียก License license = new License(); license.setLicense("path/to/license.file"); ก่อนทำการดำเนินการใด ๆ กับดัชนี

คำถามที่พบบ่อย

Q: ข้อกำหนดเบื้องต้นสำหรับการใช้ GroupDocs.Search ใน Java คืออะไร?
A: Java 8+, ไลบรารี GroupDocs.Search, และความรู้พื้นฐานเกี่ยวกับแนวคิดการทำดัชนี

Q: ฉันจะติดตั้ง GroupDocs.Search ผ่าน Maven อย่างไร?
A: เพิ่มรีโพซิทอรีและการพึ่งพาที่แสดงในส่วนการตั้งค่า Maven ไปยังไฟล์ pom.xml ของคุณ

Q: ฉันสามารถแก้ไขแอตทริบิวต์หลังจากเอกสารถูกทำดัชนีแล้วได้หรือไม่?
A: ได้, ใช้ AttributeChangeBatch เพื่ออัปเดตแอตทริบิวต์ของเอกสารเป็นชุดโดยไม่ต้องทำดัชนีใหม่

Q: ถ้ากระบวนการทำดัชนีของฉันช้า จะทำอย่างไร?
A: ปรับแต่งหน่วยความจำ JVM (-Xmx), ใช้การอัปเดตเป็นชุด, และอัปเกรดเป็นเวอร์ชันไลบรารีล่าสุดเพื่อรับแพตช์ประสิทธิภาพ

Q: ฉันจะหาแหล่งข้อมูลเพิ่มเติมเกี่ยวกับ GroupDocs.Search สำหรับ Java ได้จากที่ไหน?
A: เยี่ยมชม official documentation หรือสำรวจฟอรั่มชุมชน

แหล่งข้อมูล


อัปเดตล่าสุด: 2026-09-21
ทดสอบกับ: GroupDocs.Search 25.4 for Java
ผู้เขียน: GroupDocs

<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>
import com.groupdocs.search.Index;

// Initialize an index in a specified directory
Index index = new Index("YOUR_OUTPUT_DIRECTORY/ChangeAttributes");
index.add("YOUR_DOCUMENT_DIRECTORY");
import com.groupdocs.search.results.DocumentInfo;

DocumentInfo[] documents = index.getIndexedDocuments();
import com.groupdocs.search.common.AttributeChangeBatch;
import com.groupdocs.search.SearchOptions;

AttributeChangeBatch batch = new AttributeChangeBatch();
batch.addToAll("public"); // Add 'public' to all documents
batch.remove(documents[0].getFilePath(), "public"); // Remove 'public' from a specific document
batch.add(documents[0].getFilePath(), "main", "key"); // Add 'main' and 'key' attributes

// Apply changes
index.changeAttributes(batch);
import com.groupdocs.search.results.SearchResult;

SearchOptions options = new SearchOptions();
options.setSearchDocumentFilter(SearchDocumentFilter.createAttribute("main"));
String query = "length";
SearchResult result = index.search(query, options); // Perform the search
import com.groupdocs.search.events.EventHandler;
import com.groupdocs.search.events.FileIndexingEventArgs;

index.getEvents().FileIndexing.add(new EventHandler<FileIndexingEventArgs>() {
    @Override
    public void invoke(Object sender, FileIndexingEventArgs args) {
        if (args.getDocumentFullPath().endsWith("SampleDocument.pdf")) {
            args.setAttributes(new String[] { "main", "key" });
        }
    }
});
index.add("YOUR_DOCUMENT_DIRECTORY");

บทแนะนำที่เกี่ยวข้อง