확장 가능한 검색 네트워크 구축 – GroupDocs.Java로 문서 인덱싱

이 튜토리얼에서는 GroupDocs.Search for Java를 사용하여 문서를 인덱스에 추가하는 방법과 확장 가능한 검색 네트워크를 구축하는 방법을 배웁니다. 검색 네트워크 구성, 노드 배포, 이벤트 처리 과정을 안내하여 애플리케이션이 여러 서버에 걸쳐 대용량 문서 컬렉션을 효율적으로 처리할 수 있도록 합니다.

빠른 답변

  • “add documents to index”가 무엇을 의미하나요? 파일을 검색 가능한 인덱스에 삽입하여 빠르게 조회할 수 있도록 하는 것을 의미합니다.
  • 어떤 라이브러리가 이 기능을 제공하나요? GroupDocs.Search for Java.
  • 라이선스가 필요합니까? 임시 체험 라이선스를 사용할 수 있으며, 프로덕션에서는 상용 라이선스가 필요합니다.
  • 수평 확장이 가능한가요? 예—여러 SearchNetworkNode 인스턴스를 배포함으로써 가능합니다.
  • 필요한 Java 버전은 무엇인가요? JDK 8 이상.

인덱스에 문서를 추가한다는 것은 무엇인가요?

소스 파일(PDF, DOCX, PPTX 등)을 GroupDocs.Search 엔진에 로드하면 텍스트를 추출하고, 용어 빈도 테이블을 생성하며, 이를 인덱스 파일에 저장합니다. 결과 인덱스를 통해 수백 페이지에 달하는 컬렉션에서도 서브 초 단위의 키워드 검색이 가능합니다.

네트워크 환경에서 GroupDocs.Search for Java를 사용하는 이유는?

여러 노드에 인덱싱 및 검색 작업을 분산시켜 데이터 소스 근처에서 처리함으로써 쿼리 지연 시간을 감소시키고, 다운타임 없이 노드를 추가하거나 제거할 수 있습니다. 이 아키텍처를 통해 여러 서버에서 검색을 수행하면서도 성능을 일관되게 유지할 수 있습니다.

전제 조건

  • Java Development Kit (JDK) 8+ 설치됨.
  • Maven 의존성 관리용.
  • Java와 Maven 프로젝트 구조에 대한 기본적인 이해.

필수 라이브러리, 버전 및 종속성

GroupDocs.Search for Java를 구현하려면 Maven 프로젝트에 다음을 포함하십시오:

<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 releases에서도 찾을 수 있습니다.

환경 설정 요구 사항

  • 시스템에 JDK 8 이상이 설치되어 있어야 합니다.
  • Maven가 설치되어 있고 Maven 프로젝트를 사용하는 경우 설정되어 있어야 합니다.

지식 전제 조건

  • Java 프로그래밍에 대한 기본 이해.
  • Maven에서 종속성을 관리하는 방법에 대한 숙지.

GroupDocs.Search for Java 설정

  1. Maven 설정: 위에 표시된 저장소와 종속성을 pom.xml 파일에 추가합니다.
  2. 직접 다운로드: 또는 GroupDocs Search Java releases에서 라이브러리를 다운로드하십시오.

라이선스 획득

  • GroupDocs 웹사이트를 방문하여 무료 체험 또는 임시 라이선스를 획득하십시오.
  • 전체 액세스 및 지원을 위해 상용 라이선스 구매를 고려하십시오.

기본 초기화

Java 애플리케이션에서 GroupDocs.Search를 초기화합니다:

import com.groupdocs.search.*;

public class SearchSetup {
    public static void main(String[] args) {
        // Initialize an index
        Index index = new Index("path/to/index/directory");

        // Add documents to the index
        index.add("path/to/documents");
        
        System.out.println("GroupDocs.Search setup complete.");
    }
}

검색 네트워크에서 인덱스에 문서를 추가하는 방법은?

네트워크의 어느 노드를 통해서든 문서를 로드하면 프레임워크가 인덱싱 작업을 자동으로 분산하고 부하를 균형 잡으며 실시간으로 공유 인덱스를 업데이트합니다. 각 노드는 할당된 파일을 처리하고 텍스트를 추출한 뒤 중앙 인덱스에 증분 변경을 기록하여 새로 추가된 콘텐츠가 거의 즉시 모든 노드에서 검색 가능하도록 합니다.

기능 1: 검색 네트워크 구성

개요

검색 네트워크를 구성한다는 것은 노드를 설정하여 검색 작업을 효율적으로 관리하고 분산시키는 것을 의미합니다.

단계 1: 기본 경로 및 포트 정의

SearchNetworkNode 클래스는 분산 인덱스에 참여하는 단일 노드를 나타냅니다.

String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/SearchNetworkNodeEvents/";
int basePort = 49140; // Change if necessary due to busy port issues
단계 2: 네트워크 구성

NetworkConfiguration은 모든 노드가 시작 시 읽는 공통 설정(기본 경로, 포트, 복제 계수)을 보관합니다.

import com.groupdocs.search.scaling.*;
import com.groupdocs.search.scaling.configuring.*;

Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);

기능 2: 검색 네트워크 노드 배포

개요

노드를 배포하여 네트워크 전반에 걸쳐 검색 작업을 분산하고 처리합니다.

단계 1: 구성 파일을 사용하여 노드 배포

SearchNetworkNode 인스턴스는 동일한 구성 파일로 시작되어 정의된 기본 포트 범위를 통해 서로를 발견할 수 있습니다.

import com.groupdocs.search.scaling.*;

SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);

기능 3: 노드 이벤트 구독

개요

노드 이벤트를 구독하면 검색 네트워크 내 다양한 동작을 모니터링하고 대응할 수 있습니다.

단계 1: 구독 메서드 정의

NodeEventListener는 인덱싱 진행 상황, 오류 및 노드 상태 변경에 대한 콜백을 받기 위해 구현하는 인터페이스입니다.

import com.groupdocs.search.events.*;
import com.groupdocs.search.scaling.events.*;

public static void subscribe(SearchNetworkNode node) {
    // Subscribe to IndexingCompleted event
    node.getEvents().IndexingCompleted.add(new EventHandler() {
        @Override
        public void invoke(Object s, EventArgs e) {
            System.out.println("Indexing completed.");
        }
    });

    // Additional events can be subscribed similarly...
}
단계 2: 구독 메서드 사용

각 노드에 리스너를 등록하면 대규모 배치 작업 중에 실시간 피드백을 받을 수 있습니다.

SearchNetworkNode masterNode = nodes[0];
subscribe(masterNode);

노드 종료

항상 노드를 정상적으로 종료하여 대기 중인 쓰기를 플러시하고 네트워크 소켓을 해제하십시오.

for (SearchNetworkNode node : nodes) {
    node.close();
}

실용적인 적용 사례

  1. 엔터프라이즈 검색 솔루션 – 여러 서버에 걸친 대규모 문서 검색을 처리하기 위해 검색 네트워크를 구현합니다.
  2. 전자상거래 플랫폼 – 여러 노드에 인덱싱 작업을 분산시켜 제품 검색 기능을 강화합니다.
  3. 콘텐츠 관리 시스템(CMS) – CMS 환경에서 콘텐츠 검색 및 업데이트 성능을 향상시킵니다.

성능 고려 사항

  • 시스템 리소스에 따라 노드 배치를 최적화하십시오.
  • 특히 대용량 데이터셋을 처리할 때 메모리 누수를 방지하기 위해 메모리 사용량을 정기적으로 모니터링하십시오.
  • 구성 설정을 활용하여 인덱싱 및 검색 작업을 미세 조정하여 효율성을 높이십시오.

일반적인 문제와 해결책

문제일반적인 원인해결 방법
포트 충돌basePort가 이미 사용 중basePort를 사용 가능한 번호로 변경
노드에 연결할 수 없음방화벽 또는 네트워크 규칙필요한 포트를 열고 연결을 확인
인덱스가 업데이트되지 않음잘못된 문서 경로basePath가 올바른 디렉터리를 가리키는지 확인
높은 메모리 사용량대규모 배치 인덱싱문서를 더 작은 배치로 인덱싱하거나 힙 크기를 늘리십시오

자주 묻는 질문

Q: 노드를 배포할 때 포트 충돌을 어떻게 처리합니까?
A: 구성 코드에서 basePort 변수를 사용 가능한 포트로 변경하십시오.

Q: GroupDocs.Search를 실시간 인덱싱에 사용할 수 있나요?
A: 예, 적절한 구성으로 실시간 인덱싱을 지원합니다.

Q: 노드 배포 중 흔히 발생하는 문제는 무엇인가요?
A: 네트워크 연결 및 잘못된 경로 설정이 흔한 원인입니다. 모든 경로와 포트가 올바르게 구성되었는지 확인하십시오.

Q: 네트워크가 실행 중일 때도 인덱스에 문서를 추가할 수 있나요?
A: 물론입니다. 어떤 노드에서든 index.add(...)를 호출하면 네트워크가 새로운 작업을 자동으로 분산합니다.

Q: 개발 테스트에 라이선스가 필요합니까?
A: 테스트에는 임시 체험 라이선스로 충분하며, 프로덕션 사용에는 상용 라이선스가 필요합니다.

리소스

이 가이드를 따라 하면 GroupDocs.Search for Java를 사용하여 문서를 인덱스에 추가하고 견고한 확장 가능한 검색 네트워크 구축을 효과적으로 관리할 수 있습니다. 즐거운 코딩 되세요!


최종 업데이트: 2026-05-22
테스트 환경: GroupDocs.Search 25.4 for Java
작성자: GroupDocs

관련 튜토리얼