GroupDocs.Search를 사용한 Java 검색 구성 방법
오늘날 빠르게 변화하는 디지털 환경에서 검색 구성 방법을 효율적으로 구현하는 것은 프로젝트 성공을 좌우할 수 있습니다. 수천 개의 계약서, 연구 논문, 내부 보고서를 다루든, 잘 설계된 검색 네트워크는 몇 초 만에 올바른 문서를 찾아줍니다. 이 튜토리얼에서는 검색 네트워크 구성, 노드 배포 및 GroupDocs.Search for Java를 사용한 실시간 검색 업데이트 활성화 방법을 단계별로 안내합니다.
빠른 답변
- 검색 네트워크의 주요 목적은 무엇인가요? 인덱싱 및 쿼리 처리를 여러 노드에 분산시켜 확장성과 속도를 높이는 것입니다.
- 필요한 라이브러리 버전은? GroupDocs.Search for Java v25.4 이상입니다.
- 라이선스가 필요한가요? 평가용 무료 체험이 가능하지만, 실제 운영에는 상용 라이선스가 필요합니다.
- 실시간 업데이트는 어떻게 처리되나요? 인덱싱 변경 시 발생하는 노드 이벤트를 구독함으로써 처리합니다.
- 새 문서 폴더를 즉시 추가할 수 있나요? 예—인덱서의
addDirectories메서드를 사용합니다.
GroupDocs 컨텍스트에서 “검색 구성 방법”이란?
검색을 구성한다는 것은 검색 네트워크를 설정하여 문서가 어디에 있는지, 노드 간 통신 방법, 인덱싱 조정 방식을 정의하는 것을 의미합니다. 네트워크가 구성되면 다운타임 없이 노드를 추가·제거할 수 있어 최신 검색 결과에 지속적으로 접근할 수 있습니다.
왜 GroupDocs.Search for Java를 사용하나요?
- Scalability: 여러 머신에 작업 부하를 분산합니다.
- Real‑time updates: 새로 인덱싱된 파일이 네트워크 전체에 즉시 반영됩니다.
- Ease of integration: 간단한 Maven 설정과 명확한 Java API 제공.
- Enterprise‑ready: 대용량 데이터와 복잡한 쿼리 시나리오를 처리합니다.
전제 조건
- Java Development Kit (JDK) 8+ 설치.
- Maven을 통한 의존성 관리.
- Java, Maven 및 검색 개념에 대한 기본 지식.
GroupDocs.Search for Java 설정
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에서 라이브러리를 받을 수 있습니다.
라이선스 획득
- Free Trial: 모든 기능을 체험할 수 있는 체험 라이선스.
- Temporary License: 장기 평가 기간을 위한 임시 라이선스 요청.
- Commercial License: 실제 운영 환경에 필수.
기본 초기화
import com.groupdocs.search.Configuration;
// Initialize configuration with your document path and port
String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/GettingDocumentsInNetwork/";
int basePort = 49112;
Configuration config = new Configuration(basePath, basePort);
Java에서 검색 네트워크 구성 방법
1단계: 필요한 패키지 가져오기
import com.groupdocs.search.scaling.ConfiguringSearchNetwork;
import com.groupdocs.search.scaling.Configuration;
2단계: 네트워크 구성
String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/GettingDocumentsInNetwork/";
int basePort = 49112;
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
- Parameters:
basePath는 문서 폴더 경로를,basePort는 노드 통신에 사용할 TCP 포트를 지정합니다.
검색 네트워크 노드 배포
1단계: 배포 패키지 가져오기
import com.groupdocs.search.scaling.SearchNetworkDeployment;
import com.groupdocs.search.scaling.SearchNetworkNode;
2단계: 노드 배포
String[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
SearchNetworkNode masterNode = nodes[0]; // Designate the first node as the master node
- Master Node: 모든 노드의 검색 및 인덱싱을 조정합니다.
실시간 검색 업데이트를 위한 노드 이벤트 구독
1단계: 이벤트 패키지 가져오기
import com.groupdocs.search.scaling.SearchNetworkNodeEvents;
2단계: 마스터 노드 이벤트 구독
SearchNetworkNodeEvents.subscribe(masterNode);
- Event Handling: 문서가 추가·수정·삭제될 때마다 실시간 검색 업데이트가 이루어집니다.
인덱싱을 위한 디렉터리 추가
1단계: 인덱서 패키지 가져오기
import com.groupdocs.search.examples.Utils;
import com.groupdocs.search.scaling.Indexer;
2단계: 문서 디렉터리 추가
Indexer indexer = masterNode.getIndexer();
indexer.addDirectories("YOUR_DOCUMENT_DIRECTORY/DocumentsPath");
- Dynamic Indexing: 필요에 따라 폴더를 무제한 추가할 수 있으며, 네트워크가 자동으로 인덱싱합니다.
인덱싱된 문서 가져오기
1단계: 검색기 패키지 가져오기
import com.groupdocs.search.scaling.Searcher;
import com.groupdocs.search.scaling.NetworkDocumentInfo;
2단계: 문서 정보 가져오기
Searcher searcher = masterNode.getSearcher();
int[] shardIndices = masterNode.getShardIndices();
for (int i = 0; i < shardIndices.length; i++) {
int shardIndex = shardIndices[i];
NetworkDocumentInfo[] infos = searcher.getIndexedDocuments(shardIndex);
for (NetworkDocumentInfo info : infos) {
int nodeIndex = masterNode.getNodeIndex(info.getShardIndex());
String filePath = info.getDocumentInfo().getFilePath();
// Retrieve and process document attributes
String[] attributes = indexer.getAttributes(filePath);
NetworkDocumentInfo[] items = searcher.getIndexedDocumentItems(info);
for (NetworkDocumentInfo item : items) {
// Process each indexed item
}
}
}
- Shard Management: 샤드에 문서를 분산시켜 대용량 데이터셋을 효율적으로 처리합니다.
실용적인 적용 사례
- Enterprise Document Management: 수백만 파일에 대한 중앙 집중식 검색.
- Legal Firms: 사건 파일, 계약서, 증거 자료를 신속히 찾음.
- Academic Research: 학술지와 논문을 즉시 검색 가능하도록 인덱싱.
성능 고려 사항
- Optimize Indexing: 정기적인 인덱스 새로 고침 및 오래된 데이터 정리.
- Memory Management: 특히 대형 샤드를 다룰 때 JVM 힙을 모니터링.
- Scalability Planning: 데이터 양이 증가하면 노드를 추가하고 네트워크가 자동으로 부하를 균형 맞춤.
일반적인 문제 및 해결책
| 문제 | 원인 | 해결책 |
|---|---|---|
| 노드가 연결되지 않음 | 포트 충돌 또는 방화벽 | basePort가 열려 있고 다른 서비스에서 사용되지 않는지 확인하십시오 |
| 인덱스가 업데이트되지 않음 | 이벤트 구독 누락 | 배포 후 SearchNetworkNodeEvents.subscribe(masterNode)를 호출하십시오 |
| 메모리 부족 오류 | 너무 많은 대형 샤드 로드 | 샤드 크기를 줄이거나 JVM 힙(-Xmx 플래그)을 늘리세요 |
자주 묻는 질문
Q: 네트워크가 실행 중일 때 새 디렉터리를 추가할 수 있나요?
A: 예—indexer.addDirectories() 메서드를 사용하세요; 구독된 이벤트가 실시간으로 업데이트를 전파합니다.
Q: 노드 상태를 어떻게 모니터링하나요?
A: 각 SearchNetworkNode는 상태 API를 제공하므로 원하는 모니터링 도구와 통합하세요.
Q: 마스터 노드를 별도 머신에서 실행할 수 있나요?
A: 물론 가능합니다. 모든 노드가 동일한 basePort를 공유하고 네트워크를 통해 서로 연결될 수 있도록 하세요.
Q: 지원되는 파일 형식은 무엇인가요?
A: GroupDocs.Search는 PDF, Word, Excel, PowerPoint, 일반 텍스트 등 다양한 형식을 기본적으로 지원합니다.
Q: 새 노드를 추가한 후 네트워크를 재시작해야 하나요?
A: 아니요—노드는 동적으로 추가·제거할 수 있으며 마스터 노드가 자동으로 샤드를 재분배합니다.
결론
이제 GroupDocs.Search for Java를 사용해 검색 구성 방법을 처음부터 실시간 업데이트와 분산 인덱싱까지 단계별로 완전히 이해했습니다. 이 패턴을 적용해 어떤 산업에서도 빠르고 확장 가능하며 신뢰할 수 있는 문서 검색 솔루션을 구축하십시오.
Last Updated: 2026-01-08
Tested With: GroupDocs.Search for Java 25.4
Author: GroupDocs