검색 가능한 인덱스 Java 만들기 – GroupDocs.Search for Java 배포

오늘날 데이터 중심의 세상에서 creating a searchable index java 애플리케이션은 방대한 문서 컬렉션을 효율적으로 처리해야 합니다. 엔터프라이즈급 검색 서비스를 구축하든 작은 프로젝트를 진행하든, 잘 구성된 검색 네트워크는 검색 속도와 관련성을 크게 향상시킬 수 있습니다. 이 가이드에서는 GroupDocs.Search for Java 설정 전체 과정을 살펴보며, 파일을 검색에 추가하고 디렉터리를 노드에 추가하는 방법을 안내하여 바로 문서 인덱싱을 시작할 수 있도록 합니다.

빠른 답변

  • GroupDocs.Search의 주요 목적은 무엇인가요? 분산 네트워크 전반에 걸쳐 문서를 인덱싱하고 검색하기 위한 확장 가능한 Java 기반 엔진을 제공합니다.
  • 어떤 버전을 사용해야 하나요? 최신 안정 버전(예: 25.4)을 새 프로젝트에 권장합니다.
  • 라이선스가 필요합니까? 30일 무료 체험을 제공하며, 프로덕션 사용을 위해서는 영구 라이선스가 필요합니다.
  • 파일과 전체 디렉터리를 모두 추가할 수 있나요? 예 – addFilesaddDirectories 헬퍼를 사용하여 콘텐츠를 수집합니다.
  • 필요한 Java 버전은 무엇인가요? Java 8 이상이며, 의존성 관리를 위해 Maven이 필요합니다.

“create searchable index java”란 무엇인가요?

Java에서 검색 가능한 인덱스를 만든다는 것은 용어를 해당 용어가 포함된 문서와 매핑하는 데이터 구조를 구축하여 빠른 전체 텍스트 쿼리를 가능하게 하는 것을 의미합니다. GroupDocs.Search는 복잡한 작업을 추상화하여 문서를 제공하고 검색 동작을 조정하는 데 집중할 수 있게 해줍니다.

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

  • 확장 가능한 네트워크 아키텍처 – 인덱싱 작업을 공유하는 다수의 노드를 배포합니다.
  • 다양한 문서 형식 지원 – PDF, Word, Excel, PowerPoint, 이미지 등.
  • 이벤트 기반 업데이트 – 노드 이벤트를 구독하여 인덱스를 실시간으로 최신 상태로 유지합니다.
  • 간단한 Maven 통합pom.xml에 몇 줄만 추가하면 인덱싱을 시작할 수 있습니다.

사전 요구 사항

  • JDK 8+ 가 개발 머신에 설치되어 있어야 합니다.
  • IntelliJ IDEA 또는 Eclipse와 같은 IDE.
  • JavaMaven에 대한 기본 지식.
  • GroupDocs.Search for Java 라이브러리에 접근 가능(다운로드 또는 Maven).

GroupDocs.Search for Java 설정

Maven 의존성

Add the 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>

팁: 공식 릴리스 페이지를 확인하여 버전 번호를 최신 상태로 유지하세요.

공식 사이트에서 JAR 파일을 직접 다운로드할 수도 있습니다: GroupDocs.Search for Java releases.

라이선스 획득

  • 무료 체험: 30일 평가.
  • 임시 라이선스: 장기 테스트를 위해 요청.
  • 구매: 프로덕션 배포에 필요합니다.

기본 초기화

Create a configuration object that points to a folder where index files will be stored and defines the base communication port:

import com.groupdocs.search.Configuration;

class InitializeSearch {
    public static void main(String[] args) {
        String basePath = "your/base/path";
        int basePort = 8080;
        
        Configuration config = new ConfiguringSearchNetwork().configure(basePath, basePort);
        // Use this configuration for subsequent operations
    }
}

GroupDocs.Search를 사용하여 searchable index java를 만드는 방법은?

아래에서는 add files to searchadd directories to node에 필요한 핵심 기능을 설명하고, 확장 가능한 네트워크를 배포하는 방법을 다룹니다.

기능 1 – 구성 및 네트워크 설정

Configuring the search network is the first step toward building a searchable index.

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

class ConfiguringSearchNetwork {
    public static Configuration configure(String basePath, int basePort) {
        // Configure the search network with specified base path and port
        return new Configuration(basePath, basePort);
    }
}
  • basePath – 인덱스 데이터가 저장될 디렉터리.
  • basePort – 시작 포트; 각 노드는 이 값에서 증가합니다.

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

Deploying nodes distributes indexing workload across multiple machines or processes.

import com.groupdocs.search.scaling.*;

class SearchNetworkDeployment {
    public static SearchNetworkNode[] deploy(String basePath, int basePort, Configuration configuration) {
        // Deploy nodes based on the provided configuration
        return new SearchNetworkNode[]{new SearchNetworkNode()};
    }
}

SearchNetworkNode는 자체 인덱싱 서비스를 실행하여 수평적으로 확장되는 create searchable index java를 가능하게 합니다.

기능 3 – 노드 이벤트 구독

Real‑time updates keep the index synchronized with file system changes.

import com.groupdocs.search.scaling.*;

class SearchNetworkNodeEvents {
    public static void subscribe(SearchNetworkNode node) {
        // Logic to subscribe to the specified node's events
    }
}

이벤트를 수신함으로써 새 파일이 도착할 때 자동으로 재인덱싱을 트리거할 수 있습니다.

기능 4 – 네트워크 노드에 디렉터리 추가

Use this helper to add directories to node, recursively collecting all supported documents.

import java.io.File;
import java.util.ArrayList;

class DirectoryAdder {
    public static void addDirectories(SearchNetworkNode node, String... directoryPaths) {
        ArrayList<String> files = new ArrayList<>();
        for (String directoryPath : directoryPaths) {
            final File folder = new File(directoryPath);
            listFiles(folder, files);
        }
        addFiles(node, files.toArray(new String[0]));
    }

    private static void listFiles(final File folder, ArrayList<String> list) {
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                listFiles(fileEntry, list);
            } else {
                list.add(fileEntry.getPath());
            }
        }
    }
}

기능 5 – 네트워크 노드에 파일 추가

When you need fine‑grained control, add files to search individually:

import com.groupdocs.search.Document;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import org.apache.commons.io.FilenameUtils;
import com.groupdocs.search.Indexer;
import com.groupdocs.search.options.*;

class FileAdder {
    public static void addFiles(SearchNetworkNode node, String... filePaths) {
        try {
            InputStream[] streams = new FileInputStream[filePaths.length];
            Document[] documents = new Document[filePaths.length];
            for (int i = 0; i < filePaths.length; i++) {
                String filePath = filePaths[i];
                InputStream stream = new FileInputStream(filePath);
                streams[i] = stream;
                
                // Create a document from the input stream
                String fileName = FilenameUtils.getName(filePath);
                String extension = "." + FilenameUtils.getExtension(filePath);
                Document document = Document.createFromStream(
                    fileName,
                    new Date(),
                    extension,
                    stream);
                documents[i] = document;
            }

            // Initialize the indexer and configure options
            Indexer indexer = node.getIndexer();
            IndexingOptions options = new IndexingOptions();
            options.setUseRawTextExtraction(false);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

이 방법을 사용하면 스트림, 클라우드 스토리지 또는 임시 위치에서 오는 파일을 인덱싱하는 유연성을 얻을 수 있습니다.

일반적인 문제 및 해결책

문제원인해결 방법
검색 결과에 문서가 나타나지 않음인덱스가 커밋되지 않음파일 추가 후 node.getIndexer().commit()을 호출합니다.
포트 충돌 오류basePort를 다른 서비스가 사용 중다른 basePort를 선택하거나 사용 가능한 포트를 확인합니다.
지원되지 않는 파일 형식라이브러리에 파서가 없음파일 확장자가 지원되는지 확인하거나 사용자 정의 추출기를 추가합니다.

자주 묻는 질문

Q: GroupDocs.Search를 클라우드 기반 Java 애플리케이션에서 사용할 수 있나요?
A: 예. 이 라이브러리는 모든 Java 런타임에서 동작하며, basePath를 네트워크에 마운트된 폴더나 로컬에 마운트된 클라우드 스토리지로 지정할 수 있습니다.

Q: 파일이 변경될 때 인덱스를 어떻게 업데이트하나요?
A: 노드 이벤트를 구독하고(Feature 3 참조) 변경된 경로에 대해 addFiles 또는 addDirectories를 다시 호출합니다.

Q: 배포할 수 있는 노드 수에 제한이 있나요?
A: 실제로는 하드웨어와 네트워크 대역폭에 따라 제한됩니다. API 자체에는 강제적인 제한이 없습니다.

Q: 새 파일을 추가한 후 노드를 재시작해야 하나요?
A: 아니요. 파일 추가 시 자동으로 인덱싱이 트리거되며, 작업을 연기한 경우에만 커밋이 필요합니다.

Q: 기본적으로 지원되는 문서 형식은 무엇인가요?
A: PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, TXT, HTML 및 다양한 이미지 형식이 지원됩니다. 전체 목록은 공식 문서를 참고하세요.


마지막 업데이트: 2025-12-26
테스트 환경: GroupDocs.Search for Java 25.4
작성자: GroupDocs