GroupDocs.Search for Java에서 와일드카드와 함께 구문 검색하는 방법

현대의 문서 중심 애플리케이션에서 구문 검색 방법을 빠르고 정확하게 수행하는 것은 사용자 경험에 있어 결정적인 요소입니다. 지식 베이스, 전자상거래 카탈로그, 혹은 규정 기반 저장소를 구축하든, 정확한 구문 또는 그 변형을 찾을 수 있는 능력은 사용자의 생산성을 유지하고 지원 비용을 줄여줍니다. 이 튜토리얼에서는 GroupDocs.Search for Java 설치, 검색 인덱스 생성, 문서 로드, 정확한 구문 및 와일드카드 강화 쿼리 실행을 명확하고 프로덕션 준비된 코드 스니펫과 함께 안내합니다.

빠른 답변

  • 구문 검색의 주요 이점은 무엇인가요? 단어 순서와 근접성을 정확히 일치시켜 정확한 시퀀스를 포함하는 문서만 반환됩니다.
  • 구문 안에 와일드카드를 사용할 수 있나요? 예—와일드카드는 전체 순서를 유지하면서 단어를 건너뛰거나 교체할 수 있게 해줍니다.
  • 개발에 라이선스가 필요합니까? 무료 체험판으로 테스트가 가능하며, 프로덕션 배포에는 정식 라이선스가 필요합니다.
  • 어떤 Maven 버전을 사용해야 하나요? 최신 GroupDocs.Search for Java 릴리스(예: 작성 시점 25.4)입니다.
  • 이 접근 방식이 대규모 문서 집합에 적합한가요? 물론입니다—인덱스가 최적화된 경우 GroupDocs.Search는 수십만 개 문서 컬렉션을 서브초 수준의 쿼리 지연 시간으로 처리할 수 있습니다.

“구문 검색 방법”이란?

구문을 검색한다는 것은 문서에서 특정 단어 순서를 찾는 것을 의미합니다.
구문 쿼리를 실행하면 엔진은 단어가 정확한 순서와 정의된 근접성 내에 나타나는지 확인하여, 다른 문맥에서 동일한 단어가 포함된 관련 없는 결과를 제거합니다. 이는 구문 검색이 법적 조항, 제품 코드 또는 순서가 중요한 모든 텍스트를 찾는 데 이상적임을 의미합니다.

구문 및 와일드카드 쿼리에 GroupDocs.Search를 사용하는 이유

GroupDocs.Search는 일반 서버 하드웨어에서 최대 100만 문서까지 고처리량 인덱싱을 제공하면서 서브초 수준의 쿼리 응답 시간을 유지합니다. 쿼리 언어는 정확한 구문, 간단한 * 및 ? 와일드카드, 그리고 숫자 범위(*2~5)와 같은 고급 패턴을 지원합니다. 이 라이브러리는 Maven이나 직접 JAR 다운로드를 통해 모든 Java 애플리케이션에 통합될 수 있으며, 외부 서비스 없이 Java 8+에서 실행됩니다.

사전 요구 사항

  • Java 8 이상 (Java 11 LTS 권장).
  • Maven 3 이상(의존성 관리를 선호하는 경우).
  • Java 프로젝트 구조와 객체 지향 개념에 대한 기본적인 이해.

GroupDocs.Search for Java 설정

Maven 사용

공식 리포지토리와 GroupDocs.Search 의존성을 pom.xml에 추가합니다:

<!-- Maven repository -->
<repositories>
    <repository>
        <id>groupdocs-releases</id>
        <url>https://repository.groupdocs.com/release</url>
    </repository>
</repositories>

<!-- GroupDocs.Search dependency -->
<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-search</artifactId>
    <version>25.4</version>
</dependency>

직접 다운로드

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

라이선스 획득

  • 무료 체험: 빠른 실험에 이상적이며, 인덱싱된 데이터가 100 MB로 제한됩니다.
  • 임시 라이선스: GroupDocs 포털에서 30일 평가 키를 요청하세요.
  • 정식 라이선스: 프로덕션 사용 및 무제한 인덱싱 용량에 필요합니다.

기본 초기화 및 설정

인덱스 파일을 보관할 폴더를 만들고 Index 객체를 인스턴스화합니다. Index 클래스는 디스크에 저장된 검색 가능한 인덱스를 나타내며, 문서를 추가, 업데이트 및 쿼리하는 메서드를 제공합니다.

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

검색 가능하도록 만들 문서를 추가합니다:

String indexFolder = "YOUR_OUTPUT_DIRECTORY/PhraseSearch";
Index index = new Index(indexFolder);

GroupDocs.Search에서 와일드카드와 함께 구문 검색하는 방법

이 섹션에서는 구문 검색의 세 단계—정확히 일치, 간단한 와일드카드, 고급 와일드카드 패턴—를 시연하며, 인덱스 생성, 문서 추가 및 각 쿼리 유형을 간결한 Java 코드로 실행하는 방법을 보여줍니다. 예제는 텍스트 기반 쿼리와 객체 기반 쿼리 구성을 모두 설명하여 개발자가 애플리케이션에 유연한 검색 기능을 통합할 수 있게 합니다.

간단한 구문 검색

개요

법적 조항이나 제품 모델 번호와 같이 단어 순서의 정확히 일치가 필요할 때 이 방법을 사용합니다.

직접 답변

인덱스를 로드하고, 인용된 구문(예: "quick brown fox")으로 search를 호출하면 엔진은 정확히 그 순서와 공백을 유지하는 문서만 반환합니다. 쿼리는 수백만 파일이 포함된 인덱스에서도 밀리초 단위로 실행됩니다.

단계 1: 인덱스 생성

String documentsFolder = "YOUR_DOCUMENT_DIRECTORY";
index.add(documentsFolder);

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

Index index = new Index(indexFolder);

단계 3: 특정 구문 검색 (텍스트 형태)

index.add(documentsFolder);

단계 4: 객체 기반 쿼리 (정확한 구문 검색)

String queryText = "\"sollicitudin at ligula\"";
SearchResult resultText = index.search(queryText);

와일드카드가 포함된 구문 검색

개요

와일드카드 자리표시자(*는 임의의 문자 수, ?는 단일 문자)는 주변 순서를 유지하면서 가변 단어를 건너뛸 수 있게 합니다.

직접 답변

인용된 구문 안에 와일드카드 토큰(*)을 삽입—예: "quick * fox"—하면 quick과 fox 사이의 모든 단어와 일치합니다. 엔진은 쿼리 시점에 와일드카드를 확장하여 패턴을 만족하는 인덱스된 용어만 스캔하므로 성능이 일반 구문 쿼리와 비슷합니다.

단계 1: 인덱스 생성

(Simple Phrase Search와 동일합니다.)

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

(위와 동일합니다.)

단계 3: 와일드카드가 포함된 텍스트 형태 검색

SearchQuery word1 = SearchQuery.createWordQuery("sollicitudin");
SearchQuery word2 = SearchQuery.createWordQuery("at");
SearchQuery word3 = SearchQuery.createWordQuery("ligula");
SearchQuery queryObject = SearchQuery.createPhraseSearchQuery(word1, word2, word3);
SearchResult resultObject = index.search(queryObject);

단계 4: 와일드카드가 포함된 객체 기반 쿼리 (Wildcard Search Java)

String queryText = "\"sollicitudin *0~~3 ligula\"";
SearchResult resultText = index.search(queryText);

고급 와일드카드 검색

개요

숫자 범위, 선택적 문자 및 사용자 정의 정규식 유사 패턴을 결합하여 정교한 매칭을 수행합니다(예: 버전 번호 또는 제품 코드).

직접 답변

확장된 와일드카드 구문 *min~max를 사용해 허용되는 단어 거리 범위를 정의하거나 ?로 단일 문자를 매칭합니다. 예를 들어, "error *2~5 code"는 error 뒤에 2~5개의 단어가 오고 그 뒤에 code가 오는 경우를 찾습니다. 이러한 정밀도는 거짓 양성을 줄이면서도 유연성을 제공합니다.

단계 1: 인덱스 생성

(명확성을 위해 반복합니다.)

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

(반복합니다.)

단계 3: 복잡한 와일드카드 패턴이 포함된 텍스트 형태 검색

SearchQuery word1 = SearchQuery.createWordQuery("sollicitudin");
SearchQuery wildcard2 = SearchQuery.createWildcardQuery(0, 3);
SearchQuery word3 = SearchQuery.createWordQuery("ligula");
SearchQuery queryObject = SearchQuery.createPhraseSearchQuery(word1, wildcard2, word3);
SearchResult resultObject = index.search(queryObject);

단계 4: 고급 와일드카드가 포함된 객체 기반 쿼리

String queryText = "\"sollicitudin *0~~3 ?(0~4)la\"";
SearchResult resultText = index.search(queryText);

실용적인 적용 사례

  • 콘텐츠 관리 시스템: 편집자는 수백 페이지를 수동으로 스캔하지 않고도 정확한 조항이나 유연한 발췌를 찾을 수 있습니다.
  • 전자상거래 카탈로그: 와일드카드 허용 덕분에 구매자는 설명자를 생략하거나 동의어를 사용해도 제품을 찾을 수 있습니다.
  • 법률 및 컴플라이언스: 계약서 전반에 걸쳐 약간의 변형이 있을 수 있는 계약 언어를 신속하게 분리할 수 있습니다.

성능 고려 사항

  • Create Search Index는 안정적인 문서 집합당 한 번만 수행하고, 모든 쿼리에서 동일한 Index 인스턴스를 재사용합니다.
  • Add Documents Incrementally 새 파일이 도착하면 점진적으로 추가합니다—전체 인덱스를 재구축하는 것을 피해 CPU 사용량을 낮게 유지합니다.
  • Design Precise Wildcard Patterns; 더 넓은 패턴(*)은 용어 확장 수를 늘려 CPU 부하를 증가시킬 수 있습니다.
  • **Call index.optimize()**를 주기적으로(지원되는 경우) 호출하여 인덱스를 압축하고 메모리 사용량을 제어합니다.

일반적인 문제 및 해결책

문제해결책
와일드카드 쿼리에서 결과가 반환되지 않음와일드카드 구문(*min~max)을 확인하고 대상 단어가 정의된 거리 내에 존재하는지 확인합니다.
파일 업데이트 후 인덱스가 오래됨index.add(updatedFolder) 또는 증분 업데이트 API를 사용해 변경된 파일만 새로 고칩니다.
대규모 데이터셋에서 높은 메모리 사용량JVM 힙을 늘립니다(-Xmx4g 이상) 및 병렬 처리를 위해 인덱스를 여러 샤드로 분할하는 것을 고려합니다.

자주 묻는 질문

Q: 와일드카드와 구문 검색의 차이점은 무엇인가요?
A: 구문 검색은 정확한 단어 순서와 공백을 요구하는 반면, 와일드카드는 그 순서 내에서 단어를 교체하거나 건너뛰어 유연한 매칭을 제공합니다.

Q: 검색에서 숫자 데이터와 함께 와일드카드를 사용할 수 있나요?
A: 예—와일드카드 범위 매개변수(*min~max)는 숫자와 단어 모두에 적용되어 "version *1~3"와 같은 쿼리를 가능하게 합니다.

Q: 매우 큰 문서 컬렉션을 어떻게 처리해야 하나요?
A: 인덱스를 최적화하고, 증분 업데이트를 수행하며, 용어 확장을 제한하도록 구체적인 와일드카드 패턴을 설계합니다. GroupDocs.Search는 표준 하드웨어에서 쿼리 지연 시간을 200 ms 이하로 유지하면서 100만 문서를 인덱싱할 수 있습니다.

Q: GroupDocs.Search가 실시간 검색 시나리오에 적합한가요?
A: 물론입니다—인덱스가 구축되면 쿼리는 밀리초 단위로 실행되어 인터랙티브 검색 박스와 자동 완성 기능에 이상적입니다.

Q: 기존 Java 프로젝트에 이 라이브러리를 통합할 수 있나요?
A: 예. Maven 의존성이나 JAR를 추가하고, 예시와 같이 Index를 인스턴스화하면 기존 코드를 변경하지 않고도 바로 쿼리를 실행할 수 있습니다.


Last Updated: 2026-05-28
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs

double word1 = SearchQuery.createWordQuery("sollicitudin");
SearchQuery wildcard2 = SearchQuery.createWildcardQuery(0, 3);

WordPattern pattern = new WordPattern();
pattern.appendWildcard(0, 4);
pattern.appendString("la");

SearchQuery wordPattern3 = SearchQuery.createWordPatternQuery(pattern);
SearchQuery queryObject = SearchQuery.createPhraseSearchQuery(word1, wildcard2, wordPattern3);
SearchResult resultObject = index.search(queryObject);

관련 튜토리얼