GroupDocs.Search를 사용한 Java에서 비밀번호로 보호된 파일의 문서 인덱싱 방법

비밀번호로 보호된 문서 인덱싱 방법을 궁금해 하신다면, 바로 이곳이 정답입니다. 현대 기업에서는 민감한 데이터를 비밀번호로 보호하는 것이 필수이지만, 그 때문에 빠르고 검색 가능한 인덱스를 만들기가 어려워집니다. 이 튜토리얼에서는 GroupDocs.Search for Java를 사용해 비밀번호로 보호된 파일에 대한 안전하고 고성능의 문서 인덱스를 구축하는 정확한 단계를 단계별로 안내하면서, 과정이 간단하고 유지보수하기 쉬운 방법을 소개합니다.

빠른 답변

  • 이 튜토리얼에서 다루는 내용은? 비밀번호 사전과 이벤트 리스너를 이용한 비밀번호 보호 문서 인덱싱.
  • 필요한 라이브러리는? GroupDocs.Search for Java (최신 버전).
  • 라이선스가 필요한가요? 평가용으로 사용할 수 있는 임시 무료 체험 라이선스가 제공됩니다.
  • 다른 파일 형식도 인덱싱할 수 있나요? 네, GroupDocs.Search는 PDF, DOCX, XLSX 등 다양한 형식을 지원합니다.
  • 필요한 Java 버전은? JDK 8 이상.

“create document index java”란 무엇인가요?

Java에서 문서 인덱스를 만든다는 것은 용어와 해당 용어가 나타나는 파일을 매핑하는 검색 가능한 데이터 구조를 구축한다는 의미입니다. GroupDocs.Search를 사용하면 이 과정이 자동으로 암호화된 문서를 처리하므로 각 파일을 수동으로 해제할 필요가 없습니다.

비밀번호 보호 파일에 GroupDocs.Search를 사용하는 이유

  • Zero‑touch unlocking – 사전이나 이벤트 핸들러를 통해 한 번만 비밀번호를 제공하면 됩니다.
  • 고성능 – 수백만 개의 문서도 처리할 수 있는 최적화된 인덱싱 엔진.
  • 풍부한 쿼리 언어 – Boolean 연산자, 와일드카드, 퍼지 검색 지원.
  • 다양한 형식 지원 – 기본적으로 100개 이상의 파일 형식을 처리합니다.
  • 문서 인덱싱 방법을 단순화 – API가 암호화된 파일을 다루는 복잡성을 추상화합니다.

사전 준비

  1. Java Development Kit (JDK) 8+ – PATH에 설치 및 설정 완료.
  2. IDE – IntelliJ IDEA, Eclipse 또는 Java를 지원하는 편집기.
  3. Maven – 의존성 관리를 위해 필요.
  4. GroupDocs.Search for Java – Maven을 통해 라이브러리를 추가합니다(아래 참고).

GroupDocs.Search for Java 설정하기

Maven 사용

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>

직접 다운로드

또는 GroupDocs.Search for Java releases에서 최신 버전을 직접 다운로드할 수 있습니다.

체험 라이선스를 시작하려면 GroupDocs’ temporary license page를 방문하여 무료 체험 라이선스를 발급받는 절차를 따르세요.

비밀번호 사전을 사용한 문서 인덱싱 방법

아래는 두 가지 실용적인 접근 방식입니다. 두 방법 모두 create document index java를 수행하면서 비밀번호를 자동으로 처리합니다.

접근 방식 1 – 비밀번호 사전을 이용한 인덱싱

개요

문서 비밀번호를 사전에 저장해 두면 엔진이 파일을 실시간으로 해제할 수 있습니다.

Step 1: 인덱스와 문서 폴더 정의

String indexFolder = "YOUR_OUTPUT_DIRECTORY/IndexUsingPasswordDictionary";
String documentsFolder = "YOUR_DOCUMENT_DIRECTORY"; // Path to password‑protected documents

Step 2: 인덱스 생성

// Initialize the Index object in the specified directory
Index index = new Index(indexFolder);

Step 3: 문서 비밀번호 추가

// Add passwords for specific files using their absolute paths
String path1 = new File(documentsFolder + "/English.docx").getAbsolutePath();
index.getDictionaries().getDocumentPasswords().add(path1, "123456");

String path2 = new File(documentsFolder + "/Lorem ipsum.docx").getAbsolutePath();
index.getDictionaries().getDocumentPasswords().add(path2, "123456");

Step 4: 문서 인덱싱

// Automatically retrieve passwords from the dictionary during indexing
index.add(documentsFolder);

Step 5: 인덱스에서 검색

String query = "ipsum OR increasing";
SearchResult result = index.search(query);

// Handle search results (e.g., display or process them)

팁: 파일이 많을 경우 하드코딩 대신 데이터베이스, Azure Key Vault 등 보안 저장소에서 비밀번호를 로드하는 것을 고려하세요.

문제 해결

  • 각 비밀번호가 파일의 실제 보호 비밀번호와 일치하는지 확인하세요.
  • 파일 경로가 잘못되면 FileNotFoundException이 발생합니다.

접근 방식 2 – 비밀번호 요구 이벤트 리스너를 이용한 인덱싱

개요

엔진이 비밀번호 요구 이벤트를 발생시킬 때 동적으로 비밀번호를 제공합니다.

Step 1: 인덱스와 문서 폴더 정의

String indexFolder = "YOUR_OUTPUT_DIRECTORY/IndexUsingPasswordEvent";
String documentsFolder = "YOUR_DOCUMENT_DIRECTORY"; // Path to password‑protected documents

Step 2: 인덱스 생성

// Initialize the Index object in the specified directory
Index index = new Index(indexFolder);

Step 3: 비밀번호‑요구 이벤트 구독

index.getEvents().PasswordRequired.add(new EventHandler<PasswordRequiredEventArgs>() {
    @Override
    public void invoke(Object sender, PasswordRequiredEventArgs args) {
        // Provide password for DOCX files when needed
        if (args.getDocumentFullPath().endsWith(".docx")) {
            args.setPassword("123456");
        }
    }
});

Step 4: 문서 인덱싱

// The event handler will supply passwords as required during indexing
index.add(documentsFolder);

Step 5: 인덱스에서 검색

String query = "ipsum OR increasing";
SearchResult result = index.search(query);

// Handle search results (e.g., display or process them)

문제 해결

  • 이벤트 핸들러가 인덱싱하려는 모든 파일 확장자를 포함하도록 설정하세요.
  • 먼저 몇 개의 샘플 파일로 테스트해 비밀번호가 정상적으로 적용되는지 확인하세요.

실용적인 적용 사례

  1. 기업 문서 관리: 기밀 계약서, 인사 파일, 재무 보고서 등을 자동으로 인덱싱.
  2. 법률 아카이브: 암호화된 상태로 보관하면서 사건 파일을 빠르게 검색.
  3. 의료 기록: 환자 PDF 및 Word 문서를 PHI를 노출하지 않고 인덱싱.

성능 고려 사항

  • 메모리 할당: 대용량 배치를 위해 충분한 힙 메모리(-Xmx2g 이상)를 할당하세요.
  • 병렬 인덱싱: index.addAsync(...)를 사용하거나 여러 인덱싱 스레드를 실행해 처리량을 높이세요.
  • 인덱스 유지 관리: 정기적으로 index.optimize()를 호출해 인덱스를 압축하고 쿼리 속도를 향상시킵니다.

일반적인 문제와 해결책

  • 비밀번호 오류: 문서가 건너뛰어지고 경고가 로그에 기록됩니다. 비밀번호 사전이나 이벤트 핸들러를 다시 확인하세요.
  • 지원되지 않는 형식: 필요한 형식 플러그인을 설치하거나 인덱싱 전에 지원되는 형식으로 변환하세요.
  • 대용량 파일: 힙 크기를 늘리고 작은 배치로 나누어 인덱싱하는 것을 고려하세요.

자주 묻는 질문

Q: 다양한 파일 형식은 어떻게 처리하나요?
A: GroupDocs.Search는 PDF, DOCX, XLSX, PPTX 등 많은 형식을 지원합니다. 필요에 따라 해당 형식 플러그인을 설치하면 됩니다.

Q: 비밀번호가 틀리면 어떻게 되나요?
A: 해당 문서는 건너뛰어지고 경고가 로그에 남습니다. 비밀번호 소스를 다시 확인하세요.

Q: 클라우드에 저장된 파일도 인덱싱할 수 있나요?
A: 네, 하지만 엔진은 파일 시스템 경로를 사용하므로 먼저 로컬 임시 폴더로 다운로드해야 합니다.

Q: 검색 관련성을 어떻게 높일 수 있나요?
A: IndexOptions를 통해 점수 설정을 조정하고, 동의어를 활용하며, 고급 쿼리 구문(field:term~ 퍼지 매칭) 등을 이용하세요.

Q: 일부 파일에서 인덱싱이 실패하면 어떻게 해야 하나요?
A: 로그 출력을 검토하세요. 흔한 원인으로는 비밀번호 누락, 파일 손상, 지원되지 않는 형식 등이 있습니다.

리소스

이 가이드를 따라 하면 이제 문서 인덱싱 방법을 통해 비밀번호로 보호된 파일을 인덱싱할 수 있게 되었으며, 애플리케이션의 보안성과 검색 가능성을 동시에 향상시킬 수 있습니다.


마지막 업데이트: 2026-03-15
테스트 환경: GroupDocs.Search 25.4 for Java
작성자: GroupDocs