GroupDocs.Search for Java를 사용한 문서 내 텍스트 검색 및 강조
오늘날 디지털 시대에서는 검색 및 강조 텍스트를 방대한 문서 컬렉션에서 수행하는 것이 일반적인 요구 사항입니다. 법률 검토 도구, 학술 연구 포털, 고객 지원 대시보드 등을 구축하든, 핵심 용어를 즉시 찾아 강조할 수 있으면 사용성이 크게 향상됩니다. 이 포괄적인 가이드에서는 전체 문서 강조와 조각 수준 강조(집중된 컨텍스트)를 모두 다루는 GroupDocs.Search for Java를 사용한 검색 및 강조 텍스트 구현 방법을 알아봅니다.
빠른 답변
- “검색 및 강조 텍스트”는 무엇을 의미하나요? 문서에서 쿼리 용어를 찾아 시각적으로 강조하는 것을 말합니다(예: 배경색).
- 어떤 라이브러리가 이 기능을 제공하나요? GroupDocs.Search for Java.
- 라이선스가 필요하나요? 평가용 무료 체험이 가능하며, 프로덕션에서는 정식 라이선스가 필요합니다.
- 강조 색상을 커스터마이즈할 수 있나요? 예—
HighlightOptions를 통해 任意 RGB 색상을 설정할 수 있습니다. - 조각 강조가 지원되나요? 물론입니다; 매치 전후에 표시할 용어 수를 정의하여 간결한 스니펫을 만들 수 있습니다.
검색 및 강조 텍스트란?
검색 및 강조 텍스트는 주어진 쿼리에 대해 문서 인덱스를 스캔하고, 매칭되는 문서를 검색한 뒤, 문서 출력(HTML, PDF 등) 내에서 쿼리 용어가 나타나는 모든 위치에 표시를 추가하는 과정입니다. 이 시각적 단서는 최종 사용자가 관련 정보를 즉시 파악하도록 도와줍니다.
왜 GroupDocs.Search for Java를 사용해야 할까요?
- 고성능 인덱싱 – 구성 가능한 압축 옵션 제공.
- 다양한 강조 API – 전체 문서와 사용자 정의 조각 모두에서 작동.
- 다중 포맷 지원 (DOCX, PDF, PPTX, TXT 등).
- 간편한 Maven 통합 및 명확한 Java‑중심 API.
사전 요구 사항
- Java Development Kit (JDK) 8 이상.
- 의존성 관리를 위한 Maven.
- IntelliJ IDEA 또는 Eclipse와 같은 IDE.
- Java 문법에 대한 기본적인 이해.
GroupDocs.Search for Java 설정
pom.xml에 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>
공식 사이트에서 최신 JAR를 직접 다운로드할 수도 있습니다: GroupDocs.Search for Java releases.
라이선스 획득
무료 체험으로 시작하거나 평가용 임시 라이선스를 얻으세요. 프로덕션 배포 시 전체 라이선스를 구매해 모든 기능을 활성화합니다.
구현 가이드
구현은 전체 문서 강조와 조각 강조 두 실용 섹션으로 나뉩니다. 두 섹션 모두 GroupDocs.Search를 사용해 Java 문서 강조를 수행하는 핵심 단계를 포함합니다.
인덱스 설정 구성
인덱싱 전에 고압축 스토리지를 설정하면 디스크 사용량을 줄이면서 검색 속도를 유지할 수 있습니다.
IndexSettings settings = new IndexSettings();
settings.setTextStorageSettings(new TextStorageSettings(Compression.High));
전체 문서 강조
단계 1: 인덱스 생성 및 채우기
인덱스 폴더를 만들고 검색하려는 모든 원본 파일을 추가합니다.
String indexFolder = "/path/to/your/document/directory/HighlightingInEntireDocument";
Index index = new Index(indexFolder, settings);
index.add("/path/to/your/documents");
단계 2: 검색 수행 및 강조 적용
용어(예: ipsum)를 검색하고 강조된 매치를 포함한 HTML 파일을 생성합니다.
SearchResult result = index.search("ipsum");
if (result.getDocumentCount() > 0) {
FoundDocument document = result.getFoundDocument(0);
OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/to/your/output/directory/Highlighted.html");
Highlighter highlighter = new DocumentHighlighter(outputAdapter);
HighlightOptions options = new HighlightOptions();
options.setHighlightColor(new Color(150, 255, 150)); // Custom green shade
options.setUseInlineStyles(false); // Prefer CSS for styling
index.highlight(document, highlighter, options);
}
주요 옵션 설명
- Compression – 고압축은 저장소를 절약합니다.
- HighlightColor – UI 팔레트에 맞게 任意 RGB 값을 설정합니다.
- UseInlineStyles –
false로 설정하면 전역 CSS로 스타일링할 수 있는 깔끔한 HTML이 생성됩니다.
조각 강조
단계 1: 인덱스 및 검색 (위와 동일)
String indexFolder = "/path/to/your/document/directory/HighlightingInFragments";
Index index = new Index(indexFolder, settings);
index.add("/path/to/your/documents");
SearchResult result = index.search("ipsum");
단계 2: 조각 컨텍스트 정의 및 강조
각 조각에 매치 전후로 표시할 용어 수를 지정합니다.
HighlightOptions options = new HighlightOptions();
options.setTermsBefore(5); // Include 5 terms before the match
options.setTermsAfter(5); // Include 5 terms after the match
options.setHighlightColor(new Color(127, 200, 255)); // Custom blue shade
options.setUseInlineStyles(true); // Use inline styles for emphasis
FoundDocument document = result.getFoundDocument(0);
FragmentHighlighter highlighter = new FragmentHighlighter(OutputFormat.Html);
index.highlight(document, highlighter, options);
단계 3: 강조된 조각 가져오기 및 파일 쓰기
생성된 조각을 수집해 HTML 파일에 기록합니다.
StringBuilder stringBuilder = new StringBuilder();
FragmentContainer[] fragmentContainers = highlighter.getResult();
for (FragmentContainer container : fragmentContainers) {
String[] fragments = container.getFragments();
if (fragments.length > 0) {
stringBuilder.append("\n<br>").append(container.getFieldName()).append("<br>\n");
for (String fragment : fragments) {
stringBuilder.append(fragment).append("\n");
}
}
}
try {
Files.write(Paths.get("/path/to/your/output/directory/Fragments.html"), stringBuilder.toString().getBytes());
} catch (IOException ex) {
// Handle exceptions
}
실용 적용 사례
- 법률 문서 검토 – 법령, 조항, 사례 참조를 즉시 강조.
- 학술 연구 – 수십 개의 PDF 및 Word 파일에서 핵심 용어를 빠르게 찾아냄.
- 고객 지원 – 티켓 기록에서 주문 번호나 오류 코드를 정확히 찾아냄.
성능 고려 사항
- 인덱스 크기 –
Compression.High를 사용하면 디스크 footprint가 감소합니다. - 조각 컨텍스트 –
termsBefore/After값을 크게 하면 정확도가 높아지지만 속도에 영향을 줄 수 있습니다. - 메모리 관리 – 대규모 코퍼스를 인덱싱할 때 JVM 힙을 모니터링하고, 매우 큰 세트의 경우 증분 인덱싱을 고려하세요.
흔히 발생하는 문제와 해결책
- 인덱싱 오류 – 파일 경로를 확인하고 애플리케이션에 읽기/쓰기 권한이 있는지 확인합니다.
- 강조가 표시되지 않음 –
UseInlineStyles설정이 출력 포맷(HTML vs. PDF)과 일치하는지 확인합니다. - 색상이 적용되지 않음 – RGB 값이 0‑255 범위 내에 있는지, HTML 뷰어가 해당 스타일을 지원하는지 확인합니다.
자주 묻는 질문
Q: GroupDocs.Search for Java를 사용하면 어떤 이점이 있나요?
A: 빠르고 확장 가능한 인덱싱, 커스터마이즈 가능한 강조, 다양한 문서 포맷 지원을 제공합니다.
Q: GroupDocs.Search를 REST API와 어떻게 통합할 수 있나요?
A: Spring Boot 컨트롤러를 통해 검색 및 강조 메서드를 노출하고, HTML 또는 JSON 페이로드를 반환합니다.
Q: 라이브러리가 비밀번호로 보호된 파일을 처리하나요?
A: 예—문서를 인덱스에 추가할 때 비밀번호를 제공하면 됩니다.
Q: 강조 마크업을 색상 외에 커스터마이즈할 수 있나요?
A: 물론입니다; HighlightOptions를 통해 CSS 클래스를 주입하거나, 생성 후 HTML을 수정할 수 있습니다.
Q: 이 가이드는 어떤 버전을 기준으로 작성되었나요?
A: GroupDocs.Search 25.4 버전을 기준으로 코드가 검증되었습니다.
마지막 업데이트: 2025-12-26
테스트 환경: GroupDocs.Search 25.4
작성자: GroupDocs