GroupDocs.Search를 사용한 Java 텍스트 강조
현대 기업 애플리케이션에서 highlight text java는 원시 검색 결과를 즉시 읽을 수 있는 인사이트로 전환하는 데 필수적입니다. 법률 검토 포털, 학술 연구 엔진, 고객 지원 대시보드 중 무엇을 구축하든, 쿼리 용어를 찾아 시각적으로 강조할 수 있으면 사용자가 수많은 수동 스캔 시간을 절약할 수 있습니다. 이 튜토리얼에서는 GroupDocs.Search for Java를 사용하여 search documents java, index documents java를 수행하고 전체 문서와 조각 수준 강조를 모두 적용하는 방법을 몇 줄의 코드만으로 보여줍니다.
빠른 답변
- “search and highlight text”는 무엇을 의미합니까? 문서 내부에서 쿼리 용어를 찾아 시각적으로 강조하는 것을 의미합니다(예: 색상 배경).
- 어떤 라이브러리가 이 기능을 제공합니까? GroupDocs.Search for Java.
- 라이선스가 필요합니까? 평가를 위해 무료 체험을 사용할 수 있으며, 프로덕션 사용에는 정식 라이선스가 필요합니다.
- 강조 색상을 사용자 정의할 수 있나요? 예—
HighlightOptions를 통해 任意의 RGB 색상을 설정할 수 있습니다. - 조각 강조가 지원됩니까? 물론입니다; 매치 전후의 용어 수를 정의하여 간결한 스니펫을 만들 수 있습니다.
문서에서 Java 텍스트를 강조하는 방법
문서에서 Java 텍스트를 강조하려면 먼저 적절한 압축 설정을 사용하여 소스 파일의 인덱스를 구축하고, 원하는 용어를 찾기 위해 검색 쿼리를 실행한 다음, 각 매치를 강조 태그로 감싸서 결과를 HTML, PDF 또는 일반 텍스트로 내보냅니다. 이 세 단계 프로세스는 대규모 컬렉션에서 빠르고 정확한 강조를 보장합니다.
- 인덱스 생성: 저장 공간을 최소화하는 압축 설정을 사용합니다.
- 검색 실행: 강조하려는 쿼리 문자열을 사용합니다.
- 출력 생성(HTML, PDF 또는 일반 텍스트) – 쿼리 용어가 나타나는 모든 위치를 강조 태그로 감쌉니다.
검색 및 텍스트 강조란 무엇인가요?
검색 및 텍스트 강조는 인덱스된 컬렉션을 주어진 쿼리로 스캔하고, 일치하는 문서를 검색한 뒤, 출력물(HTML, PDF 등) 내에서 쿼리 용어가 나타나는 모든 위치에 표시를 추가하는 과정입니다. 이 시각적 표시를 통해 최종 사용자는 관련 정보를 즉시 찾을 수 있습니다.
왜 GroupDocs.Search for Java를 사용하나요?
GroupDocs.Search for Java는 고성능 인덱싱(Compression.High를 사용하면 인덱스당 최대 50 GB), 전체 문서와 사용자 정의 조각에서 작동하는 풍부한 강조, 그리고 DOCX, PDF, PPTX, TXT 등 30가지 이상의 파일 형식을 지원하는 다중 포맷 지원을 제공합니다. 또한 증분 인덱싱을 제공하여 전체 인덱스를 재구축하지 않고 새 파일을 추가할 수 있어 대규모 배포 시 다운타임을 최대 80 %까지 줄여줍니다.
사전 요구 사항
- Java Development Kit (JDK) 8 이상.
- 의존성 관리를 위한 Maven.
- IntelliJ IDEA 또는 Eclipse와 같은 IDE.
- Java 구문에 대한 기본적인 이해.
GroupDocs.Search for Java 설정
pom.xml에 GroupDocs 저장소와 의존성을 추가합니다:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>25.4</version>
</dependency>
공식 사이트에서 최신 JAR를 직접 다운로드할 수도 있습니다: GroupDocs.Search for Java releases.
라이선스 획득
무료 체험으로 시작하거나 평가용 임시 라이선스를 얻으세요. 프로덕션 배포에서는 모든 기능을 사용하려면 정식 라이선스를 구매해야 합니다.
구현 가이드
구현은 두 가지 실용적인 섹션으로 나뉩니다: 전체 문서에서 강조와 조각에서 강조. 두 섹션 모두 GroupDocs.Search를 사용하여 Java 문서를 강조하는 방법에 필요한 핵심 단계를 포함합니다.
인덱스 설정 구성
인덱싱 전에 저장소를 고압축으로 설정하세요—이렇게 하면 검색 속도를 유지하면서 디스크 사용량을 최대 70 % 줄일 수 있습니다.
IndexSettings는 인덱스가 디스크에 저장되는 방식을 제어하는 구성 객체입니다. Compression을 Compression.High로 설정하면 이 최적화가 적용됩니다.Compression은 인덱스 파일에 적용되는 데이터 압축 수준을 지정하며, Compression.High는 최대 크기 감소를 제공합니다.
전체 문서에서 강조
단계 1: 인덱스 생성 및 채우기
인덱스 폴더를 만들고 검색하려는 모든 소스 파일을 추가합니다. Index 클래스는 검색 가능한 컨테이너를 나타냅니다.
단계 2: 검색 수행 및 강조 적용
용어(예: ipsum)를 검색하고 강조된 매치를 포함한 HTML 파일을 생성합니다. HighlightOptions를 사용하여 강조 색상과 인라인 스타일 사용 여부를 지정합니다.
HighlightOptions를 통해 전경 및 배경 색상과 각 강조 용어에 적용될 CSS 클래스를 정의할 수 있습니다.
HtmlHighlighter는 제공된 옵션을 기반으로 강조된 용어가 포함된 HTML 출력을 생성합니다.SearchResult는 일치하는 문서 목록과 각 용어가 발견된 위치를 포함합니다.
직접 답변: 인덱스를 로드하고 search("ipsum")를 호출한 뒤, 결과 SearchResult와 구성된 HighlightOptions 인스턴스를 HtmlHighlighter에 전달합니다. 하이라이터는 “ipsum”이 나타나는 모든 위치를 선택한 배경색을 가진 <span>으로 감싼 HTML을 반환합니다.
핵심 옵션 설명
- Compression – 고압축은 저장 공간을 절약합니다.
- HighlightColor – UI 팔레트에 맞게 任意의 RGB 값을 설정합니다.
- UseInlineStyles –
false는 CSS로 전역 스타일링이 가능한 깔끔한 HTML을 생성합니다.
조각에서 강조
단계 1: 인덱스 및 검색 (위와 동일)
동일한 인덱스와 검색 단계가 적용되며, Index와 SearchResult 객체를 재사용합니다.
단계 2: 조각 컨텍스트 정의 및 강조
FragmentOptions를 사용하여 매치 전후에 몇 개의 용어를 포함할지 지정합니다.
FragmentOptions는 각 스니펫에 포함되는 주변 단어 수(termsBefore와 termsAfter)를 제어하여 컨텍스트와 스니펫 길이 사이의 균형을 맞출 수 있게 합니다.
단계 3: 강조된 조각 가져오기 및 쓰기
생성된 조각을 수집하여 HTML 파일에 기록합니다. 각 조각은 구성한 HighlightOptions에 따라 이미 강조되어 있습니다.
fragmentHighlighter는 지정된 조각 및 강조 옵션을 사용하여 SearchResult에서 강조된 스니펫을 생성하는 유틸리티입니다.
직접 답변: SearchResult를 얻은 후 fragmentHighlighter.highlight(searchResult, fragmentOptions, highlightOptions)를 호출합니다. 이 메서드는 HTML 스니펫 리스트를 반환하며, 각 스니펫은 매치된 용어를 설정된 컨텍스트 단어 수로 둘러싸고 선택한 색상으로 강조합니다.
실용적인 적용 사례
- 법률 문서 검토 – 수천 개의 계약서에서 법령, 조항 또는 사례 참조를 즉시 강조합니다.
- 학술 연구 – 수십 개의 PDF 및 Word 파일에서 핵심 용어를 찾아내어 문헌 검토 시간을 최대 60 % 단축합니다.
- 고객 지원 – 티켓 기록에서 주문 번호나 오류 코드를 정확히 찾아내어 상담원이 문제를 더 빠르게 해결할 수 있게 합니다.
성능 고려 사항
- 인덱스 크기 – 고압축(
Compression.High)은 눈에 띄는 지연 없이 디스크 사용량을 최대 70 % 줄입니다. - 조각 컨텍스트 –
termsBefore/After값이 클수록 스니펫 가독성이 향상되지만 쿼리당 10–15 ms 정도 추가될 수 있습니다. - 메모리 관리 – 대규모 코퍼스를 인덱싱할 때 JVM 힙을 모니터링하고, 데이터셋이 2 GB를 초과하면 메모리 사용량을 1 GB 이하로 유지하기 위해 증분 인덱싱을 고려하세요.
일반적인 문제 및 해결책
- 인덱싱 오류 – 파일 경로를 확인하고 애플리케이션이 인덱스 폴더에 대한 읽기/쓰기 권한을 가지고 있는지 확인하세요.
- 강조가 나타나지 않음 –
UseInlineStyles가 출력 형식(HTML vs. PDF)과 일치하는지 확인하세요. - 색상이 적용되지 않음 – RGB 값이 0‑255 범위 내에 있는지, 뷰어가 인라인 CSS 또는 제공된 CSS 클래스를 존중하는지 확인하세요.
자주 묻는 질문
Q: GroupDocs.Search for Java를 사용하면 어떤 이점이 있나요?
A: 빠르고 확장 가능한 인덱싱, 사용자 정의 가능한 강조, 30가지 이상의 문서 형식 지원을 제공하며, 일반 서버에서 500페이지 파일을 2 초 이하로 처리합니다.
Q: GroupDocs.Search를 REST API와 어떻게 통합할 수 있나요?
A: Spring Boot 컨트롤러를 통해 검색 및 강조 메서드를 노출하고, 강조된 조각을 포함한 HTML 스니펫 또는 JSON 페이로드를 반환합니다.
Q: 라이브러리가 암호로 보호된 파일을 처리하나요?
A: 예—addDocument(filePath, password)를 통해 문서를 인덱스에 추가할 때 비밀번호를 제공하면 됩니다.
Q: 색상 외에 강조 마크업을 사용자 정의할 수 있나요?
A: 물론입니다; options.setCssClass("myHighlight")로 CSS 클래스를 지정하고 전역 스타일링하거나, 강조 후에 생성된 HTML을 수정할 수 있습니다.
Q: 이 가이드는 어떤 버전을 테스트했나요?
A: 코드는 GroupDocs.Search 25.4를 기준으로 검증되었습니다.
Q: 강조 옵션을 인라인 스타일 대신 CSS 클래스로 사용하려면 어떻게 설정하나요?
A: options.setUseInlineStyles(false)를 호출하고 options.setCssClass("myHighlight")로 지정한 클래스에 대한 CSS 규칙을 정의합니다.
Q: PDF 출력에서 직접 용어를 강조하는 방법이 있나요?
A: 예—GroupDocs.Search는 PDF 입력을 지원하며, 하이라이터는 HTML을 출력하므로 이를 PDF 뷰어에 삽입하거나 GroupDocs.Conversion을 사용해 PDF로 다시 변환할 수 있습니다.
마지막 업데이트: 2026-09-27
테스트 대상: GroupDocs.Search 25.4
작성자: 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>
IndexSettings settings = new IndexSettings();
settings.setTextStorageSettings(new TextStorageSettings(Compression.High));
String indexFolder = "/path/to/your/document/directory/HighlightingInEntireDocument";
Index index = new Index(indexFolder, settings);
index.add("/path/to/your/documents");
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);
}
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");
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);
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
}