GroupDocs.Search 네트워크를 Java에서 구성 – 검색 향상
오늘날 데이터 중심 애플리케이션에서 configure groupdocs search network는 방대한 문서 컬렉션에서 빠르고 정확한 결과를 제공하는 핵심 단계입니다. 엔터프라이즈 수준 검색 포털을 구축하든 기존 솔루션을 확장하든, 잘 구성된 GroupDocs.Search 네트워크는 수평 확장을 가능하게 하고 동의어 지원을 추가하며 지연 시간을 낮게 유지합니다. 이 튜토리얼에서는 Java를 사용하여 GroupDocs.Search 네트워크를 설정, 배포 및 미세 조정하는 방법과 인덱스에 동의어를 추가하고 노드 수명 주기를 관리하는 실용적인 팁을 배웁니다.
빠른 답변
- GroupDocs.Search 네트워크를 구성하는 주요 이점은 무엇인가요? 분산 인덱싱 및 쿼리를 가능하게 하여 성능과 확장성을 향상시킵니다.
- 예제를 실행하려면 라이선스가 필요합니까? 무료 체험판은 개발에 사용할 수 있으며, 프로덕션에는 상용 라이선스가 필요합니다.
- 인덱스를 재구축하지 않고 동의어를 추가할 수 있나요? 예—런타임에 동의어 사전을 사용하여 add synonyms to index를 수행합니다.
- 몇 개의 노드를 배포할 수 있나요? 인프라가 허용하는 만큼 많은 노드를 배포할 수 있으며, 각 노드는 자체 포트에서 실행됩니다.
GroupDocs.Search 네트워크 구성이란?
GroupDocs.Search 네트워크를 구성한다는 것은 여러 JVM 인스턴스가 인덱싱 및 검색을 협업할 수 있도록 폴더 구조, 포트 및 노드 설정을 정의하는 것을 의미합니다. 이 설정은 워커(샤드)를 조정하는 마스터‑노드를 생성하고 전체 데이터셋에 걸쳐 쿼리가 실행되도록 보장합니다.
왜 GroupDocs.Search 네트워크를 구성해야 할까요?
- Scalability – 인덱싱 부하를 여러 머신에 분산합니다.
- Reliability – 노드를 다운타임 없이 추가하거나 제거할 수 있습니다.
- Search relevance – 풍부한 결과를 위해 인덱스에 동의어를 추가합니다.
- Performance – 병렬 쿼리 실행으로 응답 시간이 감소합니다.
사전 요구 사항
- Java Development Kit (JDK) 8 이상
- 프로젝트 빌드를 위한 Maven
- Java 문법에 대한 기본 지식
- GroupDocs.Search for 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 – 프로덕션 배포에 필요합니다.
기본 초기화 및 설정
라이브러리가 올바르게 로드되는지 확인하기 위해 간단한 Java 클래스를 생성합니다:
import com.groupdocs.search.*;
public class SearchSetup {
public static void main(String[] args) {
// Initialize the index
Index index = new Index("YOUR_INDEX_DIRECTORY");
System.out.println("GroupDocs.Search is ready to use!");
}
}
GroupDocs.Search 네트워크 구성 단계별 가이드
1. 검색 네트워크 구성
노드 통신을 위한 기본 문서 폴더와 시작 포트를 정의합니다.
import com.groupdocs.search.dictionaries.*;
import com.groupdocs.search.scaling.configuring.*;
public class ConfigureSearchNetwork {
public static void run() {
String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/ManagingDictionaries/";
int basePort = 49128;
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
// Configuration details and setup logic
}
}
- basePath – 사전(예: 동의어 파일)이 위치하는 곳.
- basePort – 첫 번째 포트; 이후 노드는 이 값에서 증가합니다.
2. 검색 네트워크 노드 배포
동일한 구성을 공유하는 여러 워커 노드를 시작합니다.
import com.groupdocs.search.scaling.*;
public class DeploySearchNetworkNodes {
public static void run() {
String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/ManagingDictionaries/";
int basePort = 49128;
Configuration configuration = new Configuration();
SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
// Node deployment logic
}
}
각 노드는 자체 포트(basePort + index)에서 실행되며 전체 인덱스의 샤드를 보유합니다.
3. 노드 이벤트 구독
마스터 노드에 이벤트 리스너를 연결하여 상태, 인덱싱 진행 상황 및 오류 조건을 모니터링합니다.
import com.groupdocs.search.scaling.*;
public class SubscribeToNodeEvents {
public static void run() {
SearchNetworkNode masterNode = new SearchNetworkNode();
SearchNetworkNodeEvents.subscribe(masterNode);
// Event subscription logic
}
}
이벤트 콜백을 통해 노드 시작/중지, 인덱싱 완료 및 예상치 못한 실패에 대응할 수 있습니다.
4. 노드 인덱서에 동의어 추가
런타임에 add synonyms to index를 수행하여 관련성을 향상시킵니다.
import com.groupdocs.search.dictionaries.*;
import com.groupdocs.search.scaling.*;
public class AddSynonyms {
public static void run(SearchNetworkNode node) {
String[] group = { "efficitur", "tristique", "venenatis" };
boolean clearBeforeAdding = true;
Indexer indexer = node.getIndexer();
int[] indices = node.getShardIndices();
SynonymDictionary dictionary = indexer.getSynonymDictionary(indices[0]);
if (clearBeforeAdding) {
dictionary.clear();
}
dictionary.addRange(new String[][] { group });
indexer.setDictionary(dictionary);
// Synonym addition logic
}
}
- group – 동등하게 취급되어야 하는 용어 배열.
- clearBeforeAdding – 기존 항목을 교체하려면
true로 설정합니다.
5. 인덱싱을 위한 디렉터리 추가
마스터 노드에 검색 가능한 문서가 포함된 폴더를 알려줍니다.
import com.groupdocs.search.scaling.*;
import com.groupdocs.search.examples.Utils;
public class AddDirectoriesForIndexing {
public static void run(SearchNetworkNode masterNode) {
String documentsPath = "YOUR_DOCUMENT_DIRECTORY/DocumentsPath";
IndexingDocuments.addDirectories(masterNode, documentsPath);
// Directory addition logic
}
}
이 메서드는 디렉터리를 재귀적으로 스캔하고 파일을 샤드에 분배합니다.
6. 네트워크에서 텍스트 검색 수행
모든 노드에 걸쳐 쿼리를 실행하며, 필요에 따라 정확히 일치하는 동작을 강제할 수 있습니다.
import com.groupdocs.search.scaling.*;
public class PerformTextSearch {
public static void run(SearchNetworkNode masterNode) {
String query = "tristique";
boolean exactMatchOnly = false;
TextSearchInNetwork.searchAll(masterNode, query, exactMatchOnly);
exactMatchOnly = true;
TextSearchInNetwork.searchAll(masterNode, query, exactMatchOnly);
// Search execution logic
}
}
형태소 분석 없이 엄격한 용어 매칭이 필요할 때 exactMatchOnly를 true로 전환합니다.
7. 네트워크 노드 종료
처리가 완료되면 리소스를 정상적으로 해제합니다.
import com.groupdocs.search.scaling.*;
public class CloseNetworkNodes {
public static void run(SearchNetworkNode[] nodes) {
for (SearchNetworkNode node : nodes) {
node.close();
// Node closure logic
}
}
}
올바른 종료는 메모리 누수를 방지하고 JVM을 건강하게 유지합니다.
실용적인 적용 사례
| Scenario | How the network helps |
|---|---|
| Enterprise Search | 데이터센터 서버에 인덱싱을 분산하여 페타바이트 규모 코퍼스를 처리합니다. |
| Document Management | 동의어를 인덱스에 추가하여 사용자가 다양한 용어에도 문서를 찾을 수 있게 합니다. |
| E‑commerce Catalog | 지역별 노드를 배포하여 현지화된 제품 검색을 빠르게 제공합니다. |
| Content Management | 편집자가 특정 디렉터리에 새 파일을 추가하는 동안에도 콘텐츠를 검색 가능하게 유지합니다. |
일반적인 문제 및 해결책
- Port Conflicts – 각 노드의 포트(basePort + index)가 사용 중이지 않은지 확인하고, 필요하면
basePort를 조정합니다. - Synonym Not Applied – 용어를 추가한 후
indexer.setDictionary(dictionary)를 호출했는지 확인합니다. - Node Not Responding – 이벤트를 구독하고
NodeFailed콜백을 확인하여 네트워크 문제를 진단합니다. - Memory Leak on Close – 배포된 모든 노드에 대해 항상
node.close()를 호출합니다.
자주 묻는 질문
Q: 여러 노드를 배포하면 검색 성능이 어떻게 향상되나요?
A: 각 노드는 데이터의 샤드를 인덱싱하여 병렬 처리를 가능하게 하고, 작업 부하가 공유되면서 쿼리 지연 시간이 감소합니다.
Q: 기존 문서를 재인덱싱하지 않고 동의어를 추가할 수 있나요?
A: 예, 런타임에 동의어 사전을 통해 add synonyms to index를 수행할 수 있으며, 변경 사항은 새로운 쿼리에 즉시 적용됩니다.
Q: 노드 이벤트 구독이 필수인가요?
A: 기본 동작에 필수는 아니지만, 이벤트 구독을 통해 노드 상태를 파악하고 실패에 신속히 대응할 수 있습니다.
Q: 노드 리소스를 관리하기 위한 모범 사례는 무엇인가요?
A: 유휴 노드를 정기적으로 종료하고, JVM 메모리 사용량을 모니터링하며, 비사용 시간대에 노드를 재활용하여 리소스 소비를 최적화합니다.
Q: GroupDocs.Search가 PDF나 이미지와 같은 비텍스트 형식을 지원하나요?
A: 물론입니다. 라이브러리는 PDF, Office 파일에서 텍스트를 추출하고 이미지에 대해 OCR을 수행하여 바로 검색 가능하게 합니다.
Last Updated: 2026-01-16
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs