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: 샤드에 문서를 분산시켜 대용량 데이터셋을 효율적으로 처리합니다.

실용적인 적용 사례

  1. Enterprise Document Management: 수백만 파일에 대한 중앙 집중식 검색.
  2. Legal Firms: 사건 파일, 계약서, 증거 자료를 신속히 찾음.
  3. 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