검색 가능한 인덱스 Java: 문서 추가 대소문자 구분 검색

현대 Java 애플리케이션에서 검색 가능한 인덱스 Java 만들기는 대용량 문서 컬렉션에서 빠르고 정확한 정보 검색의 기반입니다. 이 튜토리얼에서는 인덱스에 문서를 추가하고, 대소문자 구분 검색을 활성화하며, GroupDocs.Search를 사용해 프로세스를 미세 조정하는 방법을 보여줍니다. 법률 저장소, 전자상거래 카탈로그, 콘텐츠 관리 시스템을 구축하든, 이러한 단계는 사용자를 만족시키는 정확한 결과를 제공하는 데 도움이 됩니다.

빠른 답변

  • 검색을 시작하기 위한 주요 단계는 무엇인가요? 인덱스에 index.add(...)를 사용해 문서를 추가합니다.
  • 대소문자 구분 검색을 어떻게 활성화하나요? options.setUseCaseSensitiveSearch(true)를 설정합니다.
  • 여러 디렉터리를 검색할 수 있나요? 예 – 포함하려는 각 폴더에 대해 index.add()를 호출합니다.
  • 객체로 검색할 수 있는 메서드는 무엇인가요? SearchQuery.createWordQuery(...)를 사용합니다.
  • 테스트에 라이선스가 필요합니까? 시험용으로 임시 라이선스를 사용할 수 있습니다.

“인덱스에 문서 추가”가 의미하는 바는?

인덱스에 문서를 추가한다는 것은 소스 파일(PDF, Word 문서, 일반 텍스트 등)을 GroupDocs.Search에 제공하여 검색 가능한 데이터 구조를 구축하도록 하는 것을 의미합니다. 인덱스는 토큰화된 용어, 위치 및 메타데이터를 저장하여 엔진이 대소문자 구분 검색을 포함한 빠른 쿼리를 실행하고 결과를 효율적으로 순위 매길 수 있게 합니다.

Java에서 대소문자 구분 검색을 활성화하는 이유

대소문자 구분 검색을 활성화하면 엔진이 대소문자 차이만 있는 용어를 구분하게 되며, 이는 대문자 사용이 의미를 갖는 분야에서 매우 중요합니다. 정확한 용어 매칭을 가능하게 하고, 규제 준수 요구사항을 지원하며, 사용자의 쿼리 대소문자와 정확히 일치하는 결과를 반환함으로써 관련성을 향상시킵니다.

  • 정확한 용어 매칭 – 예: “Apple”(회사) vs. “apple”(과일).
  • 규제 준수 – 많은 산업에서 정확한 구문 매칭이 필요합니다.
  • 향상된 관련성 – 기술 및 법률 사용자들은 종종 대소문자에 특정한 결과를 기대합니다.

사전 요구 사항

  • JDK 17 이상 (권장)
  • 의존성 관리를 위한 Maven
  • IntelliJ IDEA 또는 Eclipse와 같은 IDE
  • Java 프로그래밍에 대한 기본 지식

Java용 GroupDocs.Search 설정

다음 Maven 스니펫은 프로젝트에 GroupDocs.Search 저장소와 필요한 종속성을 추가합니다.

<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를 방문하여 임시 라이선스를 획득하세요. 이를 통해 제한 없이 모든 기능을 테스트할 수 있습니다.

검색 가능한 인덱스 Java 만들기 – 텍스트 쿼리 검색

단계 1: 인덱스를 생성하고 문서를 추가하기

Index 클래스는 문서가 인덱싱되는 디스크상의 검색 가능한 저장 영역을 나타냅니다.

String indexFolder = YOUR_OUTPUT_DIRECTORY + "/CaseSensitiveSearch/QueryInTextForm";
Index index = new Index(indexFolder);
index.add(YOUR_DOCUMENT_DIRECTORY); // Add documents to the index

팁: index.add()를 여러 번 호출하여 단일 인덱스에서 여러 디렉터리를 검색할 수 있습니다.

단계 2: 대소문자 구분 검색 활성화

SearchOptions는 쿼리 처리 방식을 구성하며, 대소문자 구분 및 기타 검색 동작을 포함합니다.

SearchOptions options = new SearchOptions();
options.setUseCaseSensitiveSearch(true);

단계 3: 대소문자 구분 텍스트 쿼리 실행

SearchQuery는 엔진이 인덱스에 대해 평가하는 쿼리 객체를 구축합니다.

String query = "Advantages";
SearchResult result = index.search(query, options);

// Output results
for (FoundDocument doc : result.getDocuments()) {
    System.out.println("Document: " + doc.getDocumentInfo().getFilePath());
}

루프는 정확히 대소문자 일치하는 용어를 포함하는 각 문서의 전체 경로를 출력합니다.

검색 가능한 인덱스 Java 만들기 – 객체 쿼리 검색

단계 1: 두 번째 인덱스 초기화 (선택 사항)

두 번째 Index 인스턴스를 생성하여 객체 기반 검색을 일반 텍스트 검색과 분리할 수 있습니다.

String indexFolder = YOUR_OUTPUT_DIRECTORY + "/CaseSensitiveSearch/QueryInObjectForm";
Index index = new Index(indexFolder);
index.add(YOUR_DOCUMENT_DIRECTORY); // Add documents to the index

단계 2: 대소문자 구분 옵션 재사용

SearchOptions는 일관된 대소문자 처리를 유지하기 위해 다양한 쿼리 유형에서 재사용될 수 있습니다.

SearchOptions options = new SearchOptions();
options.setUseCaseSensitiveSearch(true);

단계 3: 객체 쿼리 구축 및 실행

WordQuery는 복합 검색을 위해 다른 쿼리 유형과 결합할 수 있는 단어 수준 검색을 나타냅니다.

SearchQuery query = SearchQuery.createWordQuery("Advantages");
SearchResult result = index.search(query, options);

// Output results
for (FoundDocument doc : result.getDocuments()) {
    System.out.println("Document: " + doc.getDocumentInfo().getFilePath());
}

createWordQuery를 사용하면 이후에 구문, 와일드카드 또는 Boolean 쿼리와 결합하여 더 복잡한 시나리오를 구현할 수 있습니다.

실용적인 적용 사례

  • Legal document management: 대소문자가 중요한 사례별 법령을 검색합니다.
  • E‑commerce platforms: “PRO‑X”와 “pro‑x”와 같은 제품 SKU를 구분합니다.
  • Content management systems (CMS): 저자가 정확한 제목이나 태그를 찾을 수 있도록 합니다.

성능 고려 사항

  • 인덱스를 최신 상태로 유지 – 새 파일이 추가되거나 기존 파일이 변경될 때 재인덱싱합니다.
  • 메모리 사용량 모니터링 – 대규모 코퍼스는 증분 인덱싱과 적절한 JVM 힙 크기 설정의 이점을 얻습니다.
  • Java 가비지 컬렉터 활용 – 더 이상 필요하지 않은 경우 Index 객체를 해제합니다.

일반적인 문제 및 해결책

문제해결책
useCaseSensitiveSearch가 무시되는 것처럼 보입니다최신 GroupDocs.Search 버전을 사용하고 옵션을 변경한 후 인덱스를 재구축했는지 확인하십시오.
알려진 용어에 대해 결과가 반환되지 않음용어의 대소문자가 정확히 일치하는지와 문서가 인덱스에 성공적으로 추가되었는지 확인하십시오.
많은 폴더를 검색하면 속도가 느려짐index.add()를 사용해 각 폴더를 개별적으로 추가하고, 매우 큰 데이터셋의 경우 인덱스를 샤드로 분할하는 것을 고려하십시오.

자주 묻는 질문

Q: GroupDocs.Search로 대용량 데이터셋을 어떻게 처리하나요?
A: 인덱스 파티셔닝을 활용하고, JVM 메모리 설정을 조정하며, 성능을 최적화하기 위해 인덱스를 주기적으로 압축합니다.

Q: 여러 디렉터리를 동시에 검색할 수 있나요?
A: 예 – 포함하려는 각 디렉터리에 대해 index.add()를 호출한 후, 결합된 인덱스에 대해 단일 쿼리를 실행합니다.

Q: 대소문자 구분 검색을 설정할 때 흔히 발생하는 함정은 무엇인가요?
A: useCaseSensitiveSearch를 활성화한 후 인덱스를 재구축하지 않거나, 쿼리 문자열에서 잘못된 대소문자를 사용하는 경우입니다.

Q: 검색 오류를 어떻게 해결할 수 있나요?
A: GroupDocs.Search가 생성한 로그 파일에서 스택 트레이스를 확인하고, 모든 Maven 종속성이 올바르게 해결되었는지 확인하십시오.

Q: GroupDocs.Search가 실시간 애플리케이션에 적합한가요?
A: 적절한 인덱싱 전략(증분 업데이트 및 인메모리 캐싱)을 사용하면 거의 실시간에 가까운 검색 결과를 제공할 수 있습니다.

리소스


마지막 업데이트: 2026-08-10
테스트 환경: GroupDocs.Search 25.4
작성자: GroupDocs

관련 튜토리얼