GroupDocs.Search for Java를 사용한 문서 인덱싱 방법
오늘날 데이터‑드리븐 세계에서 문서 인덱싱 방법을 효율적으로 수행하는 것은 대규모 파일 컬렉션을 다루는 모든 Java 개발자에게 중요한 기술입니다. 법률 계약서, 재무 보고서, 내부 보고서를 처리하든, 잘 구축된 검색 인덱스는 수시간에 걸친 수동 스캔 대신 몇 초 만에 정확한 정보를 찾아줍니다. 이 튜토리얼에서는 GroupDocs.Search for Java를 사용하여 검색 인덱스를 생성하고, 문서를 추가하며, 텍스트 기반 및 객체 기반 쿼리를 실행하는 방법을 단계별로 안내합니다.
빠른 답변
- 문서를 인덱싱하기 위한 첫 번째 단계는 무엇입니까?
Index인스턴스를 생성하여 인덱스 파일이 저장될 폴더를 지정합니다. - 인덱스에 문서를 추가하는 메서드는 무엇입니까?
index.add("PATH_TO_DOCUMENTS")를 호출하여 디렉터리를 스캔하고 지원되는 파일을 수집합니다. - 숫자 범위를 검색할 수 있나요? 예 –
"400 ~~ 4000"와 같은 텍스트 쿼리를 사용하거나SearchQuery.createNumericRangeQuery를 통한 객체 쿼리를 사용합니다.createNumericRangeQuery메서드는 숫자 범위 쿼리 객체를 생성합니다. - 라이선스가 필요합니까? 무료 체험판으로 평가할 수 있으며, 상용 라이선스를 구매하면 전체 기능이 활성화되고 사용 제한이 해제됩니다.
- 필요한 Java 버전은 무엇입니까? JDK 8 이상을 지원합니다.
GroupDocs.Search를 사용한 문서 인덱싱 방법이란?
문서를 인덱싱하면 각 파일에 대한 검색 가능한 토큰 저장소가 생성되어 엔진이 원본 파일을 매번 읽지 않고도 일치 항목을 검색할 수 있습니다. 이 전처리 단계는 원시 콘텐츠를 밀리초 단위로 쿼리 가능한 최적화된 인덱스로 변환합니다. 인덱스는 용어, 위치 및 메타데이터를 저장하여 모든 지원 문서 유형에 대해 빠른 구문 및 근접 검색을 가능하게 합니다.
왜 GroupDocs.Search for Java를 사용해야 하나요?
검색 작업은 일반적으로 표준 2‑CPU, 8 GB VM에서 10 000 개 파일(각 파일 평균 1 KB) 컬렉션에 대해 50 ms 미만에 완료됩니다. 이 라이브러리는 30개 이상의 입력 및 출력 형식을 지원하며—PDF, DOCX, XLSX, PPTX, TXT, HTML 등을 포함—추가 변환기 없이 사실상 모든 비즈니스 문서를 인덱싱할 수 있습니다. 유연한 API를 통해 일반 텍스트 쿼리, 숫자 범위, 복잡한 객체 쿼리를 결합할 수 있으며, 증분 업데이트를 통해 전체 인덱스를 재구성하지 않고도 새 파일을 추가할 수 있습니다.
사전 요구 사항
- 의존성 관리를 위한 Maven이 설치되어 있어야 합니다.
- IntelliJ IDEA 또는 Eclipse와 같은 IDE.
- 기본 Java 지식(OOP 개념, 예외 처리).
GroupDocs.Search for Java 설정
Maven 설정
Add the 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>
직접 다운로드
최신 JAR 파일은 GroupDocs.Search for Java releases에서 다운로드할 수도 있습니다.
라이선스 획득 단계
- 무료 체험 – 비용 없이 라이브러리를 살펴볼 수 있습니다.
- 임시 라이선스 – 확장된 평가를 위해 단기 키를 요청합니다.
- 구매 – 프로덕션 사용을 위한 전체 라이선스를 획득합니다.
기본 초기화 및 설정
인덱스에 문서를 추가하려면 먼저 인덱스 파일이 저장될 폴더를 가리키는 Index 객체를 생성합니다.
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");
- Parameters: 인덱싱하려는 파일이 들어 있는 폴더를 가리키는 경로 문자열입니다.
- Purpose: 이 단계가 끝나면 인덱스에 모든 지원 문서 유형의 토큰이 포함되어 전체 컬렉션에 대한 빠른 검색이 가능해집니다.
텍스트 쿼리 검색
텍스트 기반 숫자 범위 검색 수행 방법
범위를 정의하는 간단한 문자열을 사용하여 검색할 수 있습니다. 엔진은 ~~ 연산자를 “사이”로 해석하고 지정된 범위 내의 숫자를 포함하는 모든 문서를 반환합니다.
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);
- Parameters: 쿼리 문자열
"400 ~~ 4000"은 엔진에게 400과 4000 사이의 숫자를 찾도록 지시합니다. - Return value:
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);
- Parameters:
createNumericRangeQuery는 시작 정수와 종료 정수를 받습니다. - Purpose: 이 메서드는 청구서 총액, 연령, 제품 코드와 같은 숫자 필드로 결과를 필터링해야 할 때 이상적입니다.
실용적인 적용 사례
다음은 문서 인덱싱 방법이 큰 변화를 가져오는 실제 시나리오입니다:
- 법률 문서 관리 – 수천 개의 계약서에서 조항, 사건 번호 또는 날짜를 몇 초 만에 찾아냅니다.
- 재무 보고 – 각 스프레드시트를 스캔하지 않고도 특정 금액 범위에 해당하는 거래를 추출합니다.
- 재고 추적 – 분산 파일 시스템에서 일련 번호, 배치 코드 또는 SKU 범위로 항목을 찾습니다.
GroupDocs.Search를 데이터베이스, 클라우드 스토리지 또는 메시징 큐와 통합하면 문서 워크플로를 더욱 자동화할 수 있습니다.
성능 고려 사항
- 정기적인 인덱스 업데이트: 새 파일에 대해
index.add를 다시 실행하여 인덱스를 최신 상태로 유지합니다. - 리소스 관리: 힙 사용량을 모니터링합니다; 대형 인덱스는 조정된 JVM 가비지 컬렉션 설정의 이점을 얻습니다.
- 쿼리 최적화: 복잡한 필터링을 위해 객체 쿼리를 사용하여 불필요한 스캔을 줄이고 응답 시간을 개선합니다.
일반적인 문제 및 해결책
| 문제 | 발생 원인 | 해결 방법 |
|---|---|---|
| 검색 결과가 없음 | 인덱스가 생성되지 않았거나 폴더 경로가 올바르지 않음 | index.add가 올바른 디렉터리에서 실행되었으며 인덱스 폴더가 쓰기 가능한지 확인합니다. |
| 인덱싱 중 OutOfMemoryError | 파일이 매우 크거나 힙이 부족함 | JVM -Xmx 값을 늘리거나 파일을 더 작은 배치로 인덱싱합니다. |
| 지원되지 않는 파일 형식 | 파일 형식이 GroupDocs.Search에서 인식되지 않음 | 확장자가 지원 목록(PDF, DOCX, XLSX, PPTX, TXT, HTML 등)에 포함되어 있는지 확인합니다. |
자주 묻는 질문
Q: 기존 인덱스에 새 문서를 어떻게 업데이트합니까?
A: index.add("NEW_DOCUMENT_PATH")를 다시 호출하면 라이브러리가 전체 인덱스를 재생성하지 않고 새 항목을 병합합니다.
Q: GroupDocs.Search가 다양한 파일 형식을 처리할 수 있나요?
A: 예, PDF, DOCX, XLSX, PPTX, TXT, HTML 등을 포함한 30개 이상의 형식을 지원하므로 사실상 모든 비즈니스 문서를 인덱싱할 수 있습니다.
Q: GroupDocs.Search 사용을 위한 시스템 요구 사항은 무엇인가요?
A: Java 8+ 런타임, 소규모 컬렉션의 경우 최소 2 GB RAM(대규모 컬렉션은 4 GB 이상 권장), 그리고 인덱스 폴더에 대한 읽기/쓰기 권한이 필요합니다.
Q: 검색 성능 문제를 어떻게 해결할 수 있나요?
A: 인덱스를 최신 상태로 유지하고, 쿼리를 프로파일링하며, JVM 메모리 설정을 검토합니다. 인덱싱된 필드 수를 줄이거나 객체 쿼리를 사용하면 실행 속도를 높일 수 있습니다.
Q: 동의어 또는 퍼지 매칭을 지원하나요?
A: 예, SearchOptions 클래스를 통해 동의어 사전과 퍼지 검색을 활성화하여 관련성을 유지하면서 매칭 범위를 넓힐 수 있습니다. SearchOptions 클래스는 동의어 및 퍼지 매칭과 같은 고급 검색 동작을 구성합니다.
마지막 업데이트: 2026-08-10
테스트 환경: GroupDocs.Search 25.4 for Java
작성자: GroupDocs