검색 인덱스 생성 Java – Faceted 및 복합 검색

Java에서 강력한 search experience를 구현하는 것은 특히 대용량 문서 컬렉션을 처리하는 create search index Java 프로젝트가 필요할 때 압도적으로 느껴질 수 있습니다. 다행히 GroupDocs.Search for Java는 몇 줄의 코드만으로 faceted 및 복합 쿼리를 구축할 수 있는 풍부한 API를 제공합니다. 이 튜토리얼에서는 라이브러리 설정 방법, create a search index Java 방법, 문서 추가, 그리고 간단한 faceted 검색과 정교한 다중 기준 쿼리를 실행하는 방법을 배웁니다.

빠른 답변

  • Faceted 검색이란? 미리 정의된 카테고리(예: 파일 유형, 날짜)로 결과를 필터링하는 방법.
  • 검색 인덱스 Java를 어떻게 생성하나요? 폴더를 가리키는 Index 객체를 초기화하고 문서를 추가합니다.
  • 여러 기준을 결합할 수 있나요? 예—객체 기반 쿼리 또는 텍스트 쿼리에서 Boolean 연산자를 사용합니다.
  • 라이선스가 필요합니까? 무료 체험판은 개발 및 테스트에 적합하며, 상용 라이선스는 제한을 해제합니다.
  • 어떤 IDE가 가장 적합합니까? IntelliJ IDEA, Eclipse, NetBeans 등 모든 Java IDE에서 정상 작동합니다.

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

Java에서 검색 인덱스를 생성한다는 것은 문서 메타데이터와 내용을 저장하는 검색 가능한 데이터 구조를 구축하여 사용자 쿼리에 기반한 빠른 검색을 가능하게 하는 것을 의미합니다. GroupDocs.Search를 사용하면 인덱스가 디스크에 저장되고 점진적으로 업데이트될 수 있으며, faceting 및 복합 Boolean 로직과 같은 고급 기능을 지원합니다.

faceted 및 복합 쿼리에 GroupDocs.Search를 사용하는 이유

  • Out‑of‑the‑box faceting – 파일 이름, 크기 또는 사용자 정의 메타데이터와 같은 필드로 필터링합니다.
  • Rich query language – AND/OR/NOT 연산자를 사용해 텍스트, 구문, 필드 쿼리를 혼합합니다.
  • Scalable performance – 수백만 개의 문서를 인덱싱하면서도 검색 지연 시간을 낮게 유지합니다.
  • Pure Java – 네이티브 종속성이 없으며 JDK 8+가 실행되는 모든 플랫폼에서 동작합니다.

사전 요구 사항

  • JDK 8 or newer가 설치되고 IDE에 설정되어 있어야 합니다.
  • Maven(또는 Gradle)으로 의존성을 관리합니다.
  • GroupDocs.Search for Java ≥ 25.4.
  • Java OOP 개념 및 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>

직접 다운로드

또는 공식 릴리스 페이지에서 최신 JAR를 다운로드합니다:
GroupDocs.Search for Java releases

라이선스 획득

전체 기능을 사용하려면 다음 중 하나를 선택합니다:

  1. Free trial – 개발 및 테스트에 적합합니다.
  2. Temporary evaluation license – 체험판 제한을 연장합니다.
  3. Commercial license – 프로덕션 사용 시 모든 제한을 해제합니다.

기본 초기화 및 설정

다음 스니펫은 Index 클래스를 인스턴스화하여 create a search index Java를 수행하는 방법을 보여줍니다:

import com.groupdocs.search.Index;

public class SearchSetup {
    public static void main(String[] args) {
        String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Searching/FacetedSearch/SimpleFacetedSearch";
        
        // Create an instance of Index – this creates the on‑disk index
        Index index = new Index(indexFolder);
        
        System.out.println("GroupDocs.Search initialized successfully!");
    }
}

인덱스가 준비되면 실제 faceted 및 복합 쿼리로 넘어갈 수 있습니다.

검색 인덱스 Java 생성 – 간단한 Faceted 검색

Faceted 검색은 최종 사용자가 미리 정의된 카테고리( facets )에서 값을 선택하여 결과를 좁히도록 합니다. 아래는 단계별 안내입니다.

단계 1: 인덱스 생성

먼저 Index를 인덱스 파일이 저장될 폴더로 지정합니다.

import com.groupdocs.search.Index;

String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Searching/FacetedSearch/SimpleFacetedSearch";
Index index = new Index(indexFolder);

단계 2: 문서를 인덱스에 추가

GroupDocs.Search에 원본 문서가 위치한 경로를 알려줍니다. 지원되는 모든 파일 형식(PDF, DOCX, TXT 등)이 자동으로 인덱싱됩니다.

import com.groupdocs.search.Index;

String documentsFolder = "YOUR_DOCUMENT_DIRECTORY";

// Adding documents to the index
index.add(documentsFolder);

단계 3: 텍스트 쿼리로 Content 필드 검색 수행

간단한 텍스트 쿼리는 content 필드를 기준으로 필터링합니다. content: Pellentesque 구문은 본문에 Pellentesque 단어가 포함된 문서만 반환합니다.

import com.groupdocs.search.results.SearchResult;

String query1 = "content: Pellentesque";
SearchResult result1 = index.search(query1);

// Output search results
System.out.println("Documents found (query 1): " + result1.getDocumentCount());

단계 4: 객체 쿼리를 사용한 검색 수행

객체 기반 쿼리는 세밀한 제어를 제공합니다 여기서는 단어 쿼리를 만들고, 이를 필드 쿼리로 감싼 뒤 실행합니다.

import com.groupdocs.search.SearchQuery;
import com.groupdocs.search.options.CommonFieldNames;

SearchQuery wordQuery = SearchQuery.createWordQuery("Pellentesque");
SearchQuery fieldQuery = SearchQuery.createFieldQuery(CommonFieldNames.Content, wordQuery);
SearchResult result2 = index.search(fieldQuery);

// Output search results
System.out.println("Documents found (query 2): " + result2.getDocumentCount());

검색 인덱스 Java 생성 – 복합 쿼리 검색

복합 쿼리는 여러 필드, Boolean 연산자 및 구문 검색을 결합합니다. 이는 e‑commerce 필터링이나 법률 문서 조사와 같은 시나리오에 이상적입니다.

단계 1: 복합 쿼리를 위한 인덱스 생성

같은 폴더 구조를 재사용합니다; 간단한 시나리오와 복합 시나리오 모두에서 인덱스를 공유할 수 있습니다.

String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Searching/FacetedSearch/ComplexQuery";
Index index = new Index(indexFolder);
index.add(documentsFolder);

단계 2: 텍스트 쿼리로 검색 수행

다음 쿼리는 파일 이름에 lorem and ipsum or 본문에 두 개의 정확한 구문 중 하나가 포함된 경우를 찾습니다.

import com.groupdocs.search.results.SearchResult;

String query1 = "(filename: (lorem AND ipsum)) OR (content: (\"lectus eu aliquam\" OR \"dignissim turpis\"))";
SearchResult result1 = index.search(query1);

// Output search results
class SearchResult {
    public int getDocumentCount() {
        // Implementation here
        return 0; // Placeholder
    }
}
System.out.println("Documents found (complex text query): " + result1.getDocumentCount());

단계 3: 객체 쿼리를 사용한 검색 수행

객체 기반 구문은 텍스트 쿼리와 동일한 로직을 제공하지만 타입 안전성과 IDE 지원을 제공합니다.

import com.groupdocs.search.SearchQuery;

SearchQuery word6Query = SearchQuery.createWordQuery("lorem");
SearchQuery word7Query = SearchQuery.createWordQuery("ipsum");

// Constructing AND, OR queries for filename field
SearchQuery andQuery = SearchQuery.createAndQuery(word6Query, word7Query);
SearchQuery filenameQuery = SearchQuery.createFieldQuery(CommonFieldNames.FileName, andQuery);

// Content search using OR query with phrases
SearchQuery phrase1Query = SearchQuery.createPhraseSearchQuery("lectus", "eu", "aliquam");
SearchQuery phrase2Query = SearchQuery.createPhraseSearchQuery("dignissim", "turpis");

SearchQuery contentQuery = SearchQuery.createFieldQuery(CommonFieldNames.Content, 
    SearchQuery.createOrQuery(phrase1Query, phrase2Query));

// Final root query combining filename and content queries
SearchQuery rootQuery = SearchQuery.createOrQuery(filenameQuery, contentQuery);
SearchResult result2 = index.search(rootQuery);

// Output search results
System.out.println("Documents found (complex object query): " + result2.getDocumentCount());

Faceted 및 복합 검색의 실용적인 적용 사례

시나리오Faceting이 도움이 되는 방법예시 쿼리
E‑commerce 카탈로그카테고리, 가격, 브랜드별 필터링category: Electronics AND price:[100 TO 500]
법률 문서 저장소사건 번호, 관할 구역별 좁히기caseNumber: 2023-045 AND jurisdiction: "California"
연구 아카이브저자, 출판 연도, 키워드 결합(author: "Doe") AND (year: 2022) AND (keywords: "machine learning")
기업 인트라넷파일 유형 및 부서별 검색filetype: pdf AND department: HR

이 예시들은 create search index java 기술을 마스터하면 데이터 집약적인 애플리케이션에서 얼마나 큰 변화를 가져올 수 있는지를 보여줍니다.

일반적인 함정 및 문제 해결

  • Empty results – 문서가 정상적으로 추가되었는지 index.getDocumentCount() 로 확인합니다.
  • Stale index – 파일을 추가하거나 삭제한 후 index.update() 를 호출해 인덱스를 최신 상태로 유지합니다.
  • Incorrect field names – 오타를 방지하려면 CommonFieldNames 상수(Content, FileName 등)를 사용합니다.
  • Performance bottlenecks – 대용량 컬렉션의 경우 index.setCacheSize() 를 활성화하거나 전용 SSD에 인덱스 폴더를 두는 것을 고려합니다.

자주 묻는 질문

Q: GroupDocs.Search를 Spring Boot와 함께 사용할 수 있나요?
A: 물론 가능합니다. Maven 의존성을 추가하고, 인덱스를 Spring bean으로 구성한 뒤 필요할 때 주입하면 됩니다.

Q: 라이브러리가 사용자 정의 메타데이터 필드를 지원하나요?
A: 예. 인덱싱 중에 사용자 정의 필드를 추가할 수 있으며, 이후 faceting에 활용할 수 있습니다.

Q: 인덱스는 얼마나 크게 성장할 수 있나요?
A: 인덱스는 디스크 기반이며 수백만 개의 문서를 처리할 수 있습니다. 충분한 저장 공간을 확보하고 캐시 설정을 모니터링하면 됩니다.

Q: 결과를 관련성 순으로 정렬할 방법이 있나요?
A: GroupDocs.Search는 자동으로 매치 점수를 부여합니다. SearchResult.getDocument(i).getScore() 로 점수를 확인할 수 있습니다.

Q: 암호화된 PDF를 인덱싱하면 어떻게 되나요?
A: 문서를 추가할 때 비밀번호를 제공하면 됩니다: index.add(filePath, password).

결론

이제 creating a search index Java를 GroupDocs.Search와 함께 사용해 문서를 추가하고, 간단한 faceted 쿼리와 정교한 Boolean 검색을 모두 구현할 수 있게 되었습니다. 이러한 기능을 통해 e‑commerce 플랫폼부터 기업 지식 베이스에 이르기까지 다양한 애플리케이션에서 빠르고 정확하며 사용자 친화적인 검색 경험을 제공할 수 있습니다.

다음 단계가 준비되셨나요? GroupDocs.Searchhighlighting, suggestions, real‑time indexing 등 고급 기능을 탐색해 애플리케이션의 검색 파워를 한층 끌어올리세요.


Last Updated: 2025-12-16
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs