GroupDocs Search 네트워크를 Java에서 구성하는 방법

오늘날 빠르게 변화하는 디지털 환경에서 configure groupdocs search network 기술은 수백만 개의 문서를 빠르고 신뢰성 있게 검색해야 하는 모든 조직에 필수적입니다. 잘 구성된 검색 네트워크는 인덱싱 및 쿼리 작업을 여러 JVM 노드에 분산시켜 응답 시간을 낮게 유지하고 고가용성을 보장합니다. 이 튜토리얼은 Maven 설정 및 라이선스 활성화부터 노드 배포, 이벤트 구독, 문서 인덱싱, 이미지 기반 검색까지 모든 단계를 안내하여 Java에서 프로덕션 준비가 된 GroupDocs.Search 네트워크를 구축할 수 있도록 도와줍니다.

빠른 답변

  • 검색 네트워크의 주요 목적은 무엇입니까? 다중 노드에 인덱싱 및 쿼리 부하를 분산하여 확장성과 안정성을 향상시킵니다.
  • GroupDocs.Search가 기본적으로 사용하는 포트는 무엇입니까? 예제에서는 포트 49120을 사용하지만, 자유로운 포트를 선택할 수 있습니다.
  • 다운타임 없이 노드를 추가하거나 제거할 수 있습니까? 예—노드를 동적으로 배포하거나 철수시킬 수 있습니다.
  • 프로덕션에 라이선스가 필요합니까? 프로덕션 사용을 위해서는 전체 라이선스가 필요합니다; 평가용으로 체험 라이선스를 사용할 수 있습니다.
  • 이미지 검색이 기본적으로 지원됩니까? 예—GroupDocs.Search는 내장된 이미지 해시 비교 기능을 제공합니다.

검색 네트워크란?

SearchNetworkNode는 클러스터 내에서 공유 인덱스 사본을 호스팅하고 검색 요청을 처리하는 개별 노드입니다. 검색 네트워크는 상호 연결된 SearchNetworkNode 인스턴스들의 집합으로, 인덱싱 정보를 공유하고 협업 방식으로 쿼리에 응답합니다. 이 아키텍처를 통해 방대한 문서 컬렉션을 처리하면서 응답 시간을 낮게 유지하고, 노드가 오프라인이 될 경우 자동 장애 조치를 구현할 수 있습니다.

왜 Java용 GroupDocs.Search를 사용해야 하나요?

몇 분 안에 configure groupdocs search network를 수행하고, 수평 확장을 지원하며, PDF, DOCX, XLSX, PPTX 및 일반 이미지 형식을 포함한 30개 이상의 파일 형식을 지원하는 검색 엔진으로 Java 애플리케이션을 강화하세요. 벤치마크에 따르면 표준 서버 하드웨어에서 3노드 클러스터가 30분 이내에 500,000개의 문서를 인덱싱할 수 있으며, 동시에 높은 부하가 걸려도 쿼리 지연 시간이 200 ms 이하로 유지됩니다.

전제 조건

  • **JDK 8+**가 노드를 실행할 모든 머신에 설치되어 있어야 합니다.
  • IntelliJ IDEA 또는 Eclipse와 같은 IDE를 사용하면 프로젝트 관리가 용이합니다.
  • Maven을 사용하여 종속성을 해결합니다.
  • Java 네트워킹(TCP 포트, 방화벽) 및 멀티스레딩 개념에 대한 기본 지식이 필요합니다.

필요한 라이브러리 및 종속성

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>

또는 최신 버전을 GroupDocs.Search for Java releases에서 다운로드하십시오.

GroupDocs.Search를 Java에 설정하기

Maven을 통한 설치

위의 Maven 스니펫은 라이브러리를 프로젝트에 자동으로 가져옵니다.

라이선스 획득

  • Free Trial – 신용카드 없이 핵심 기능을 체험합니다.
  • Temporary License – 내부 파일럿을 위한 연장 테스트 기간을 제공합니다.
  • Full License – 프로덕션 준비가 된 무제한 사용 및 우선 지원을 제공합니다.

기본 초기화 및 설정

SearchNetworkDeployment 클래스는 검색 클러스터의 생성 및 관리를 조정하고, 노드 수명 주기와 공유 리소스를 처리합니다. 어떤 노드와도 상호 작용하기 전에 SearchNetworkDeployment 객체를 생성하고 공유 인덱스 폴더를 지정해야 합니다. 다음 코드 블록(원본 튜토리얼에서 그대로 유지)은 최소 부트스트랩을 보여줍니다:

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.");
    }
}

구현 가이드

이제 각 핵심 작업을 단계별로 설명하면서 원본 코드 자리표시자를 앞에 배치합니다.

검색 네트워크에서 노드 배포 방법

여러 노드를 배포하면 작업 부하가 분산되고 내결함성이 향상됩니다. SearchNetworkNode는 검색 클러스터에 참여하는 개별 JVM 인스턴스로, 인덱싱 및 쿼리 요청을 처리합니다. 연속 포트에 여러 노드를 시작하면 각 노드가 클라이언트 호출을 서비스하고 공통 인덱스를 공유하는 탄력적인 네트워크가 구축됩니다.

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.");
    }
}

이벤트 구독 방법

이벤트 구독을 통해 노드 상태, 인덱싱 진행 상황 및 오류에 대한 실시간 정보를 얻을 수 있습니다. SearchNetworkEvents 클래스는 인덱싱 완료, 노드 실패 또는 사용자 정의 알림과 같은 중요한 작업에 대해 트리거되는 콜백 집합을 제공합니다. 마스터 또는 워커 노드에 리스너를 등록하면 네트워크가 원활히 운영되도록 실시간 모니터링 및 자동 응답을 구현할 수 있습니다.

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.");
    }
}

문서 인덱싱 방법

효율적인 인덱싱은 빠른 검색 결과의 핵심입니다. 마스터 노드에 디렉터리를 추가하면 엔진이 각 파일을 스캔하고 검색 가능한 콘텐츠를 추출하여 공유 인덱스 구조에 저장합니다. 이 과정은 증분 방식으로 실행될 수 있어 변경된 파일만 업데이트함으로써 I/O 부하를 감소시키고 쿼리가 항상 최신 문서 버전을 반영하도록 합니다.

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.");
    }
}

이미지 검색 수행 방법

GroupDocs.Search는 이미지 해시 비교를 지원하여 시각적으로 유사한 자산을 찾을 수 있습니다. SearchImage 클래스는 이미지 파일을 캡슐화하고 인덱스에 저장된 해시와 매칭할 수 있는 지각 해시(perceptual hash)를 계산합니다. 최대 해시 차이를 지정하면 시각적 유사성 허용 범위를 제어할 수 있어 저장소 전체에서 중복 또는 관련 이미지를 신뢰성 있게 발견할 수 있습니다.

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);
    }
}

네트워크 포트 구성 방법

환경에서 이미 포트 49120을 사용 중이라면 자유로운 TCP 포트로 변경할 수 있습니다. basePort 매개변수는 클러스터의 시작 포트 번호를 결정하며, 이후 각 노드는 이 값을 자동으로 증가시킵니다. 선택한 포트가 방화벽에서 열려 있고 다른 서비스와 충돌하지 않으며 모든 노드에서 일관되게 구성되어 원활한 통신이 유지되도록 하세요.

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-06-27
테스트 환경: GroupDocs.Search 25.4 for Java
작성자: GroupDocs

관련 튜토리얼