효율적인 문서 검색 마스터하기 - GroupDocs.Search for Java
수천 개의 PDF, Word 파일 또는 스프레드시트 안에서 올바른 구절을 찾는 것은 건초더미에서 바늘을 찾는 것과 같습니다. How to create index 를 빠르게 수행하고 그 바늘을 찾아내는 것이 문서‑검색 솔루션을 가치 있게 만드는 핵심입니다. 이 튜토리얼에서는 고성능 java 검색 라이브러리인 GroupDocs.Search for Java 를 사용하여 create index, add documents to index 를 수행하고, 파일, 스트림, 문자열 및 구조화된 데이터와 같은 다양한 형식으로 문서에서 텍스트를 추출하는 방법을 배웁니다. 마지막까지 진행하면 메모리 사용량을 최소화하면서 대규모 문서 컬렉션을 확장할 수 있는 프로덕션‑레디 인덱싱 파이프라인을 구축하게 됩니다.
빠른 답변
- 주요 목적은 무엇입니까? how to create index를 사용하여 문서 내용을 즉시 검색합니다.
- 어떤 라이브러리를 사용해야 하나요? GroupDocs.Search for Java java search library.
- 텍스트를 파일로 출력할 수 있나요? 예 – 라이브러리는 HTML, 일반 텍스트 등 다양한 형식에 대한 output text to file 어댑터를 제공합니다.
- 구조화된 추출이 지원되나요? 물론입니다 – structured text extraction 어댑터를 사용하여 필드‑레벨 데이터를 얻을 수 있습니다.
- 라이선스가 필요합니까? 개발에는 트라이얼 라이선스로 충분하지만, 프로덕션 배포에는 정식 라이선스가 필요합니다.
배울 내용
- GroupDocs.Search for Java를 사용하여 how to create index 및 add documents to index 하는 방법.
- output text to file, 스트림, 문자열 및 구조화된 형식에 대한 기술.
- 인덱싱을 빠르고 메모리 효율적으로 유지하는 성능 최적화 팁.
- 법률 계약 저장소, 학술 논문 아카이브 등 실제 시나리오에서 이 기능이 빛을 발하는 사례.
왜 GroupDocs.Search for Java를 사용해야 하나요?
GroupDocs.Search는 DOCX, XLSX, PPTX, PDF, HTML 및 일반 이미지 형식을 포함한 50개 이상의 입력 및 출력 형식을 지원하며, 전체 파일을 메모리에 로드하지 않고도 다중 기가바이트 파일을 인덱싱할 수 있습니다. 벤치마크에 따르면 1 GB 문서 컬렉션을 표준 8‑코어 서버에서 2 분 미만에 인덱싱할 수 있으며, 검색 쿼리는 100 ms 미만에 결과를 반환합니다.
사전 요구 사항
- Java Development Kit (JDK) 8 이상.
- GroupDocs.Search for Java 라이브러리(트라이얼 또는 정식).
- Maven을 통한 의존성 관리.
- 기본적인 Java I/O 지식.
GroupDocs.Search for Java 설정
먼저 프로젝트의 pom.xml에 GroupDocs.Search Maven 저장소와 의존성을 추가합니다. 이 단계는 라이브러리를 클래스패스에 포함시키는 역할을 합니다.
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 릴리스에서 받을 수 있습니다.
라이선스 획득
프로덕션에서 GroupDocs.Search를 사용하려면 공식 사이트에서 트라이얼 또는 정식 라이선스를 획득하십시오. 트라이얼 라이선스는 개발 및 테스트에 제한 없이 사용할 수 있습니다.
사용자 지정 설정으로 Java 인덱스 생성 방법
Index는 검색 가능한 문서 컬렉션을 나타내는 핵심 클래스입니다.IndexSettings는 인덱스에 대한 압축 옵션 등을 구성합니다.CompressionLevel은 저장된 텍스트에 적용되는 압축 정도를 정의합니다.
압축이 활성화된 Index 객체를 로드하고 폴더를 지정한 뒤 모든 지원 파일을 추가합니다. 이 직접‑답변 문단은 정확히 다음과 같이 수행하도록 안내합니다: new Index("indexFolder", new IndexSettings().setCompressionLevel(CompressionLevel.High)) 로 Index를 인스턴스화한 뒤 index.add("documentsFolder", true) 를 호출하여 지원되는 모든 파일을 재귀적으로 인덱싱합니다. 고압축 모드는 디스크 사용량을 최대 70 %까지 줄이면서도 검색 속도를 빠르게 유지합니다.
인덱스를 생성하는 것은 모든 검색‑기반 애플리케이션의 기반이 됩니다. 아래 예제는 과정을 단계별로 안내하고 각 설정을 설명하며 인덱스가 성공적으로 구축되었는지 확인하는 방법을 보여줍니다.
인덱스 생성 및 문서 인덱싱
개요
Index 클래스는 검색 가능한 문서 컬렉션을 나타내는 핵심 구성 요소이며, 역인덱스, 용어 사전 및 빠른 조회에 필요한 메타데이터를 저장합니다.
import com.groupdocs.search.*;
import java.io.ByteArrayOutputStream;
public class FeatureIndexCreation {
public static void main(String[] args) {
// Define the folder paths for indexing
String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
String documentsFolder = YOUR_DOCUMENT_DIRECTORY + "/DocumentsPath"; // Adjust as needed
// Creating an index settings instance with compression enabled
IndexSettings settings = new IndexSettings();
settings.setTextStorageSettings(new TextStorageSettings(Compression.High));
// Creating the index in the specified folder
Index index = new Index(indexFolder, settings);
// Adding documents from the specified folder to the index
index.add(documentsFolder);
}
}
설명
- Index Settings: 텍스트 저장을 위해 high compression을 활성화하여 디스크 공간을 최적화하면서도 쿼리 속도는 유지합니다.
- Adding Documents:
index.add()메서드는 adds documents to index, 폴더를 재귀적으로 스캔하고 모든 지원 형식을 자동으로 처리합니다.
텍스트를 파일, 스트림, 문자열 및 구조화된 형식으로 출력하는 방법
인덱싱이 완료된 후에는 문서의 원시 텍스트 또는 포맷된 텍스트를 추출해야 할 때가 많습니다. GroupDocs.Search는 추출된 내용을 파일, 메모리 스트림, Java String 또는 구조화된 객체 모델에 기록할 수 있는 네 가지 어댑터를 제공합니다.
문서 텍스트를 파일로 출력
FileOutputAdapter는 추출된 문서 텍스트를 선택한 형식으로 파일에 기록합니다.
개요
FileOutputAdapter는 추출된 텍스트를 HTML, 일반 텍스트 등 선택한 형식으로 디스크에 직접 파일로 기록합니다. 이는 사람이 읽을 수 있는 보고서를 생성하거나 후속 처리 파이프라인에 전달할 때 유용합니다.
import com.groupdocs.search.*;
public class FeatureOutputToFile {
public static void main(String[] args) {
String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
Index index = new Index(indexFolder);
// Assuming documents are already indexed, retrieve the first document
DocumentInfo[] documents = index.getIndexedDocuments();
if (documents.length > 0) {
DocumentInfo document = documents[0];
// Output document text to an HTML file
FileOutputAdapter fileOutputAdapter = new FileOutputAdapter(OutputFormat.Html, YOUR_OUTPUT_DIRECTORY + "/Text.html");
index.getDocumentText(document, fileOutputAdapter);
}
}
}
설명
- FileOutputAdapter: 인덱싱된 문서의 텍스트를 HTML로 변환하고 지정된 파일 경로에 기록하여 제목 및 표와 같은 기본 서식을 보존합니다.
문서 텍스트를 스트림으로 출력
StreamOutputAdapter는 임시 파일을 만들지 않고 ByteArrayOutputStream에 추출된 텍스트를 스트리밍합니다.
개요
내용을 일시적으로만 필요로 할 때—예를 들어 HTTP 응답으로 전송하거나 웹 응답에 포함할 때—StreamOutputAdapter를 사용하십시오. 이는 ByteArrayOutputStream에 텍스트를 스트리밍하여 임시 파일 생성 오버헤드를 피합니다.
import com.groupdocs.search.*;
import java.io.ByteArrayOutputStream;
public class FeatureOutputToStream {
public static void main(String[] args) {
String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
Index index = new Index(indexFolder);
// Assuming documents are already indexed, retrieve the first document
DocumentInfo[] documents = index.getIndexedDocuments();
if (documents.length > 0) {
DocumentInfo document = documents[0];
// Output document text to a stream in HTML format
ByteArrayOutputStream stream = new ByteArrayOutputStream();
StreamOutputAdapter streamOutputAdapter = new StreamOutputAdapter(OutputFormat.Html, stream);
index.getDocumentText(document, streamOutputAdapter);
}
}
}
설명
- StreamOutputAdapter: 문서 텍스트를
ByteArrayOutputStream으로 스트리밍하여 파일 시스템에 접근하지 않고도 유연하게 처리할 수 있게 합니다.
문서 텍스트를 문자열로 출력
StringOutputAdapter는 전체 문서 텍스트를 하나의 String 객체에 담습니다.
개요
빠른 로깅, 디버깅 또는 UI 표시를 위해 StringOutputAdapter는 전체 문서 텍스트를 단일 String 객체에 캡처합니다.
import com.groupdocs.search.*;
public class FeatureOutputToString {
public static void main(String[] args) {
String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
Index index = new Index(indexFolder);
// Assuming documents are already indexed, retrieve the first document
DocumentInfo[] documents = index.getIndexedDocuments();
if (documents.length > 0) {
DocumentInfo document = documents[0];
// Output document text to a string in HTML format
StringOutputAdapter stringOutputAdapter = new StringOutputAdapter(OutputFormat.Html);
index.getDocumentText(document, stringOutputAdapter);
String result = stringOutputAdapter.getResult();
}
}
}
설명
- StringOutputAdapter: 문서 텍스트를
String에 저장하여 로그, 콘솔 출력 또는 UI 컴포넌트에 쉽게 삽입할 수 있게 합니다.
문서 텍스트를 구조화된 형식으로 출력
StructuredOutputAdapter는 단락, 표 및 사용자 정의 메타데이터를 포함하는 풍부한 객체 모델을 반환합니다.
개요
StructuredOutputAdapter는 단락, 표, 사용자 정의 메타데이터를 포함하는 풍부한 객체 모델을 반환합니다. 이 형식은 후속 자연어 처리(NLP) 또는 데이터 추출 워크플로에 이상적입니다.
import com.groupdocs.search.*;
public class FeatureOutputToStructure {
public static void main(String[] args) {
String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
Index index = new Index(indexFolder);
// Assuming documents are already indexed, retrieve the first document
DocumentInfo[] documents = index.getIndexedDocuments();
if (documents.length > 0) {
DocumentInfo document = documents[0];
// Output document text to a structured format like PlainText
StructuredOutputAdapter structuredOutputAdapter = new StructuredOutputAdapter(OutputFormat.PlainText);
index.getDocumentText(document, structuredOutputAdapter);
}
}
}
설명
- StructuredOutputAdapter: 문서 텍스트를 structured text extraction 형식으로 추출하여 세밀한 분석, 필드 추출 및 머신러닝 파이프라인과의 통합을 가능하게 합니다.
일반적인 문제 및 해결책
| 문제 | 원인 | 해결책 |
|---|---|---|
| Index not created | 잘못된 폴더 경로나 쓰기 권한 부족 | indexFolder가 존재하고 애플리케이션에 쓰기 권한이 있는지 확인 |
| No documents returned | index.add() 호출 누락 또는 잘못된 소스 폴더 | documentsFolder가 올바른 디렉터리를 가리키고 지원되는 파일 유형을 포함하는지 확인 |
| Output file empty | 출력 어댑터 경로가 잘못되었거나 디렉터리 누락 | 실행 전에 대상 디렉터리(YOUR_OUTPUT_DIRECTORY)를 생성 |
| Memory spikes with large files | 파일 전체를 메모리로 로드 | StreamOutputAdapter를 사용해 데이터를 점진적으로 처리 |
자주 묻는 질문
Q: Kotlin이나 Scala와 같은 다른 JVM 언어에서도 GroupDocs.Search를 사용할 수 있나요?
A: 예, 이 라이브러리는 순수 Java로 구현되어 있어 모든 JVM 언어와 원활하게 작동합니다.
Q: 압축이 검색 속도에 어떤 영향을 미칩니까?
A: 고압축은 디스크 사용량을 최대 70 %까지 줄이며 인덱싱 시 최소한의 CPU 오버헤드만 추가합니다; 일반적인 워크로드에서 쿼리 지연 시간은 100 ms 이하로 유지됩니다.
Q: 기존 인덱스를 재구축 없이 업데이트할 수 있나요?
A: 물론입니다. 새 파일에는 index.add()를, 오래된 파일은 index.remove()를 사용해 증분 업데이트를 수행할 수 있습니다.
Q: 자연어 처리 파이프라인에 가장 적합한 출력 형식은 무엇인가요?
A: structured text extraction 어댑터의 PlainText 결과는 깨끗하고 언어에 구애받지 않는 콘텐츠를 제공하므로 NLP 작업에 이상적입니다.
Q: 개발 및 테스트에 라이선스가 필요합니까?
A: 무료 트라이얼 라이선스로 개발 및 평가가 가능하지만, 프로덕션 배포에는 구매한 라이선스가 필요합니다.
결론
이제 how to create index, 문서 추가 및 다양한 형식으로 텍스트를 추출하는 완전한 프로덕션‑레디 워크플로를 갖추었습니다. 압축 설정으로 Index를 구성하고 문서 컬렉션을 추가한 뒤, HTML 보고서 생성, NLP 모델 입력, 웹 클라이언트 스트리밍 등 필요에 맞는 출력 어댑터를 선택하십시오. 증분 업데이트 API를 활용해 인덱스를 비용 없이 최신 상태로 유지하고, 어떤 문서 저장소에서도 빠르고 안정적인 검색을 경험할 수 있습니다.
Last Updated: 2026-06-27
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs