GroupDocs.Search Java로 네트워크 구성하는 방법
소개
오늘날 디지털 환경에서 대규모 문서 검색을 위한 네트워크 구성 설정은 모든 기업에 필수적인 기술입니다. 전통적인 솔루션은 데이터셋이 커질수록 성능 한계에 부딪히는 경우가 많지만, GroupDocs.Search for Java는 확장 가능하고 고성능의 기반을 제공합니다. 이 튜토리얼에서는 포트 구성, 노드 배포, 문서 인덱싱, 이벤트 구독, 이미지 검색 수행까지 견고한 검색 네트워크를 설정하는 데 필요한 모든 과정을 단계별로 안내합니다.
빠른 답변
- 검색 네트워크의 주요 목적은 무엇인가요? 인덱싱 및 쿼리 부하를 여러 노드에 분산시켜 확장성과 안정성을 향상시키는 것입니다.
- GroupDocs.Search가 기본적으로 사용하는 포트는 무엇인가요? 예제에서는 포트 49120을 사용하지만, 사용 가능한 다른 포트를 선택할 수 있습니다.
- 다운타임 없이 노드를 추가하거나 제거할 수 있나요? 예, 노드를 동적으로 배포하거나 철수시킬 수 있습니다.
- 프로덕션 환경에 라이선스가 필요합니까? 프로덕션 사용에는 정식 라이선스가 필요하며, 평가용 트라이얼 라이선스도 제공됩니다.
- 이미지 검색이 기본적으로 지원되나요? 예, GroupDocs.Search는 내장된 이미지 해시 비교 기능을 제공합니다.
검색 네트워크란?
검색 네트워크는 인덱싱 정보를 공유하고 쿼리에 협업적으로 응답하는 상호 연결된 SearchNetworkNode 인스턴스들의 집합입니다. 이 아키텍처를 통해 방대한 문서 컬렉션을 처리하면서도 응답 시간을 낮게 유지할 수 있습니다.
왜 GroupDocs.Search for Java를 사용해야 할까요?
- 확장성: 저장소가 성장함에 따라 노드를 추가합니다.
- 성능: 병렬 인덱싱 및 쿼리 처리를 통해 지연 시간을 줄입니다.
- 유연성: 텍스트, PDF, Office 파일 및 이미지 검색을 지원합니다.
- 이벤트 기반 관리: 이벤트 구독을 통한 실시간 모니터링.
사전 요구 사항
- **JDK 8+**가 설치되어 있어야 합니다.
- IntelliJ IDEA 또는 Eclipse와 같은 IDE.
- 의존성 관리를 위한 Maven.
- Java 및 네트워킹 개념에 대한 기본 지식.
필요한 라이브러리 및 의존성
Add the GroupDocs 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>
또는 최신 버전을 GroupDocs.Search for Java releases에서 다운로드하십시오.
GroupDocs.Search for Java 설정
Maven을 통한 설치
위의 Maven 스니펫은 라이브러리를 프로젝트에 자동으로 가져옵니다.
라이선스 획득
- Free Trial – 핵심 기능을 탐색합니다.
- Temporary License – 테스트 기간을 연장합니다.
- Full License – 프로덕션 준비가 된 무제한 사용 라이선스.
기본 초기화 및 설정
import com.groupdocs.search.*;
public class SearchSetup {
public static void main(String[] args) {
// Create an instance of Index with the path to store index data.
String indexPath = "path/to/index";
Index index = new Index(indexPath);
System.out.println("GroupDocs.Search initialized successfully.");
}
}
구현 가이드
이제 각 핵심 작업을 단계별 코드 스니펫과 함께 살펴보겠습니다.
검색 네트워크에서 노드 배포 방법
다수의 노드를 배포하면 작업 부하가 분산되고 내결함성이 향상됩니다.
public class SearchNetworkDeployment {
public static void run() {
String basePath = "YOUR_DOCUMENT_DIRECTORY";
int basePort = 49120; // Change if necessary.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
System.out.println("Deployed " + nodes.length + " search network nodes.");
}
}
설명:
basePath는 문서가 들어 있는 폴더를 가리킵니다.basePort는 각 노드가 수신하는 검색 네트워크 포트이며, 충돌을 방지하도록 조정합니다.- 이 메서드는 활성 노드를 나타내는
SearchNetworkNode객체 배열을 반환합니다.
이벤트 구독 방법
이벤트 구독을 통해 노드 상태, 인덱싱 진행 상황 및 오류에 대한 실시간 정보를 얻을 수 있습니다.
public class NodeEventSubscription {
public static void run() {
String basePath = "YOUR_DOCUMENT_DIRECTORY";
int basePort = 49120; // Adjust if needed.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
SearchNetworkEvents.subscribe(nodes[0]);
System.out.println("Subscribed to events for the master node.");
}
}
설명:
nodes[0]은 마스터 노드로 간주되며, 각 워커 노드에 개별적으로 구독할 수도 있습니다.
문서 인덱싱 방법
효율적인 인덱싱은 빠른 검색 결과의 핵심입니다.
public class DocumentIndexing {
public static void run() {
String basePath = "YOUR_DOCUMENT_DIRECTORY";
int basePort = 49120; // Change if there is a conflict.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
IndexingDocuments.addDirectories(nodes[0], "YOUR_DOCUMENT_DIRECTORY");
System.out.println("Added directories to master node's index.");
}
}
설명:
addDirectories는 마스터 노드에 스캔하고 인덱싱할 폴더를 지정합니다.- 인덱싱이 완료되면 모든 노드가 공유 인덱스를 조회할 수 있습니다.
이미지 검색 수행 방법
GroupDocs.Search는 이미지 해시 비교를 지원하여 시각적으로 유사한 자산을 찾을 수 있습니다.
public class ImageSearch {
public static void run() {
String basePath = "YOUR_DOCUMENT_DIRECTORY";
int basePort = 49120; // Modify if needed.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
SearchImage searchImage = SearchImage.create("YOUR_DOCUMENT_DIRECTORY/ic_arrow_back_black_18dp.png");
imageSearch(nodes[0], searchImage, 8);
}
}
설명:
SearchImage.create는 기준 이미지를 로드합니다.imageSearch는 선택된 노드에서 쿼리를 실행하며, 최대 해시 차이 8을 허용합니다(매칭 강도를 조정할 수 있음).
네트워크 포트 구성 방법
환경에서 이미 포트 49120을 사용 중이라면, 사용 가능한 다른 TCP 포트로 변경할 수 있습니다.
int customPort = 50000; // Example of a custom port.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, customPort);
선택한 포트가 방화벽에서 열려 있고 다른 서비스에서 사용되지 않는지 확인하십시오.
일반적인 문제 및 해결 방법
| 증상 | 가능한 원인 | 해결 방법 |
|---|---|---|
| 노드 시작 실패 | 포트 충돌 | 다른 basePort를 선택하고 방화벽 규칙을 업데이트하십시오. |
| 인덱싱이 느림 | I/O 대역폭 부족 | SSD 스토리지를 사용하고 증분 인덱싱을 활성화하십시오. |
| 이벤트 구독이 작동하지 않음 | 이벤트 핸들러 등록 누락 | 인덱싱 시작 전에 SearchNetworkEvents.subscribe(node)가 호출되었는지 확인하십시오. |
| 이미지 검색 결과 없음 | 해시 차이가 너무 낮음 | 허용되는 해시 차이를 늘리십시오(예: 4에서 8로). |
자주 묻는 질문
Q: GroupDocs.Search 네트워크에서 인덱싱 성능을 어떻게 최적화할 수 있나요?
A: 증분 인덱싱을 사용하고, 인덱스를 빠른 SSD에 저장하며, JVM에 충분한 힙 메모리를 할당하십시오.
Q: 전체 검색 네트워크를 재시작하지 않고 노드를 추가하거나 제거할 수 있나요?
A: 예—노드를 동적으로 배포하거나 철수시킬 수 있습니다. 노드를 추가한 후 SearchNetworkDeployment.deploy를 다시 호출하여 클러스터 뷰를 새로 고칩니다.
Q: 이벤트 구독이 네트워크 관리에 어떻게 도움이 되나요?
A: 구독된 이벤트는 노드 상태 변화, 인덱싱 진행 상황 및 오류에 대한 실시간 알림을 제공하여 사전 대응형 문제 해결을 가능하게 합니다.
Q: 서로 다른 문서 형식을 동시에 검색할 수 있나요?
A: 물론입니다. GroupDocs.Search는 PDF, Word, Excel, PowerPoint, 이미지 및 기타 다양한 형식을 단일 쿼리에서 지원합니다.
Q: GroupDocs.Search 네트워크의 데이터 보안은 얼마나 보장되나요?
A: 보안은 사용자의 인프라에 따라 달라집니다. 노드 간 통신에 SSL/TLS를 적용하고, 네트워크 접근을 제한하며, 데이터 보호 모범 사례를 따르십시오.
마지막 업데이트: 2026-01-19
테스트 환경: GroupDocs.Search 25.4 for Java
작성자: GroupDocs