GroupDocs.Search for Java로 문서 인덱싱하기
오늘날 데이터 중심의 세상에서 문서를 효율적으로 인덱싱하는 방법은 대용량 파일 컬렉션을 다루는 모든 Java 개발자에게 필수적인 기술입니다. 법률 계약서, 재무 보고서, 내부 보고서 등을 처리하든, 필요한 정보를 빠르게 찾아낼 수 있다면 수시간에 달하는 수작업을 절감할 수 있습니다. 이 튜토리얼에서는 GroupDocs.Search 라이브러리를 사용해 문서를 인덱싱하는 방법을 배우고, 생성된 인덱스에 대해 텍스트 기반 및 객체 기반 쿼리를 모두 수행하는 방법을 살펴봅니다. 시작해볼까요!
빠른 답변
- 문서를 인덱싱하기 위한 첫 번째 단계는? 인덱스가 저장될 폴더를 가리키는
Index객체를 초기화합니다. - 어떤 메서드가 문서를 인덱스에 추가하나요?
index.add("PATH_TO_DOCUMENTS")를 사용합니다. - 숫자 범위를 검색할 수 있나요? 예,
"400 ~~ 4000"와 같은 텍스트 쿼리 또는SearchQuery.createNumericRangeQuery를 이용한 객체 쿼리로 가능합니다. - 라이선스가 필요합니까? 무료 체험판을 이용할 수 있으며, 상용 라이선스를 구매하면 전체 기능을 사용할 수 있습니다.
- 필요한 Java 버전은? JDK 8 이상.
GroupDocs.Search와 함께하는 “문서 인덱싱”이란?
문서 인덱싱이란 폴더에 있는 파일들의 내용을 스캔하고, 검색 가능한 토큰을 별도의 인덱스 폴더에 저장하는 작업을 의미합니다. 이 사전 처리 단계 덕분에 라이브러리는 매번 원본 파일을 탐색하는 대신 준비된 인덱스를 빠르게 조회할 수 있어 순간적인 검색이 가능합니다.
왜 Java용 GroupDocs.Search를 사용해야 할까요?
- 성능: 수천 개 파일에서도 검색이 밀리초 단위로 완료됩니다.
- 포맷 지원: PDF, Word, Excel, PowerPoint 등 다양한 형식을 처리합니다.
- 유연성: 일반 텍스트 쿼리, 숫자 범위, 복합 객체 쿼리를 모두 지원합니다.
- 확장성: 전체를 다시 구축하지 않고도 새 문서를 추가해 인덱스를 손쉽게 업데이트할 수 있습니다.
사전 요구 사항
- 의존성 관리를 위한 Maven 설치
- IntelliJ IDEA 또는 Eclipse와 같은 IDE
- 기본 Java 지식 (OOP 개념, 예외 처리)
Java용 GroupDocs.Search 설정하기
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에서 최신 JAR 파일을 다운로드할 수도 있습니다.
라이선스 획득 단계
- 무료 체험 – 비용 없이 라이브러리를 살펴볼 수 있습니다.
- 임시 라이선스 – 평가 기간을 연장하기 위한 단기 키를 요청합니다.
- 구매 – 프로덕션 사용을 위한 정식 라이선스를 획득합니다.
기본 초기화 및 설정
문서를 인덱스에 추가하려면 먼저 인덱스 파일이 저장될 폴더를 가리키는 Index 객체를 생성합니다:
import com.groupdocs.search.Index;
// Initialize the index by specifying a directory path
Index index = new Index("YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\NumericRangeSearch");
이 코드는 인덱스를 생성(또는 열기)하고 문서를 받을 준비를 합니다.
구현 가이드
문서 생성 및 인덱싱
인덱스에 문서를 추가하는 방법
add 메서드는 폴더를 스캔하고 각 파일에 대한 검색 가능한 데이터를 저장합니다.
import com.groupdocs.search.Index;
// Initialize an index at the specified path
Index index = new Index("YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\NumericRangeSearch");
// Add documents from a directory for indexing
index.add("YOUR_DOCUMENT_DIRECTORY");
- 매개변수: 인덱싱하려는 파일이 들어 있는 폴더 경로 문자열
- 목적: 이 단계가 끝나면 인덱스에 모든 지원 문서 유형의 토큰이 저장되어 빠른 검색이 가능해집니다.
텍스트 쿼리 검색
텍스트 기반 숫자 범위 검색 수행 방법
범위를 정의한 간단한 문자열을 사용해 검색할 수 있습니다.
import com.groupdocs.search.*;
import com.groupdocs.search.results.*;
// Define a query for numeric values within a specific range
String query1 = "400 ~~ 4000";
// Execute text-based search on indexed data
SearchResult result1 = index.search(query1);
- 매개변수:
"400 ~~ 4000"이라는 쿼리 문자열은 400에서 4000 사이의 숫자를 찾도록 엔진에 지시합니다. - 반환값:
SearchResult는 일치하는 문서 목록과 하이라이트 정보를 담고 있습니다.
객체 쿼리 검색
숫자 범위에 대한 객체 쿼리 사용 방법
객체 기반 쿼리는 검색 조건을 프로그래밍적으로 제어할 수 있게 해줍니다.
import com.groupdocs.search.*;
import com.groupdocs.search.results.*;
// Create a numeric range query object
SearchQuery query2 = SearchQuery.createNumericRangeQuery(400, 4000);
// Perform search using the query object
SearchResult result2 = index.search(query2);
- 매개변수:
createNumericRangeQuery는 시작값과 종료값 정수를 받습니다. - 목적: 여러 조건을 결합하거나 동적으로 쿼리를 구성해야 할 때 이상적입니다.
실무 적용 사례
다음은 문서를 인덱싱하는 방법이 큰 변화를 가져올 수 있는 실제 시나리오입니다:
- 법률 문서 관리 – 수천 개 계약서에서 조항, 사건 번호, 날짜 등을 빠르게 찾아냅니다.
- 재무 보고 – 특정 금액 범위에 해당하는 거래 내역을 추출합니다.
- 재고 추적 – 일련 번호, 배치 코드, SKU 범위 등으로 품목을 검색합니다.
GroupDocs.Search를 데이터베이스, 클라우드 스토리지, 메시징 큐와 연동하면 문서 워크플로를 더욱 자동화할 수 있습니다.
성능 고려 사항
- 정기적인 인덱스 업데이트: 새 파일이 추가될 때마다
index.add를 다시 실행해 인덱스를 최신 상태로 유지합니다. - 리소스 관리: 힙 사용량을 모니터링하고, 대형 인덱스의 경우 JVM 가비지 컬렉션 설정을 최적화합니다.
- 쿼리 최적화: 불필요한 스캔을 줄이기 위해 복잡한 필터는 객체 쿼리로 구현합니다.
흔히 발생하는 문제와 해결책
| Issue | Why It Happens | Fix |
|---|---|---|
| Search returns no results | 인덱스가 생성되지 않았거나 폴더 경로가 잘못됨 | index.add가 올바른 디렉터리에서 실행됐는지, 인덱스 폴더에 쓰기 권한이 있는지 확인합니다. |
| OutOfMemoryError during indexing | 파일이 너무 크거나 힙이 부족함 | JVM -Xmx 값을 늘리거나 파일을 작은 배치로 나누어 인덱싱합니다. |
| Unsupported file format | GroupDocs.Search에서 인식하지 못하는 형식 | 파일 확장자가 지원 목록(PDF, DOCX, XLSX 등)에 포함되어 있는지 확인합니다. |
자주 묻는 질문
Q: 기존 인덱스에 새 문서를 어떻게 업데이트하나요?
A: index.add("NEW_DOCUMENT_PATH")를 다시 호출하면 라이브러리가 전체 인덱스를 재생성하지 않고 새로운 항목을 병합합니다.
Q: GroupDocs.Search가 다양한 파일 형식을 지원하나요?
A: 예, PDF, Word, Excel, PowerPoint, 일반 텍스트 등 여러 일반 포맷을 지원합니다.
Q: GroupDocs.Search 사용을 위한 시스템 요구 사항은?
A: Java 8+ 런타임, 충분한 RAM(중간 규모 컬렉션 기준 최소 2 GB), 인덱스 폴더에 대한 읽기/쓰기 권한이 필요합니다.
Q: 검색 성능 문제를 어떻게 진단하나요?
A: 인덱스가 최신인지 확인하고, 쿼리 프로파일링을 수행하며, JVM 메모리 설정을 검토합니다. 인덱싱되는 필드 수를 줄이는 것도 속도 향상에 도움이 됩니다.
Q: 동의어 검색이나 퍼지 매칭을 사용할 수 있나요?
A: 예, SearchOptions 클래스를 통해 동의어 사전 및 퍼지 검색 옵션을 활성화할 수 있습니다.
결론
이제 GroupDocs.Search for Java를 활용해 문서를 인덱싱하는 방법, 문서를 인덱스에 추가하는 방법, 그리고 텍스트 기반 및 객체 기반 쿼리를 실행하는 방법을 확실히 이해하셨습니다. 이러한 기술을 애플리케이션에 통합하면 어떤 문서 저장소에서도 빠르고 정확한 검색 경험을 제공할 수 있습니다.
다음 단계가 궁금하신가요? 파싯 검색, 동의어 처리 등을 탐색하거나 인덱스를 REST API와 연동해 다른 서비스에 검색 기능을 노출해 보세요.
Last Updated: 2026-02-06
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs