Java에서 GroupDocs.Search를 사용하여 동의어 검색하는 방법
사용자가 다른 단어를 입력하더라도 올바른 콘텐츠를 찾을 수 있게 하려면 동의어 검색이 정답입니다. 이 가이드에서는 동의어 사전 만들기, 가져오기/내보내기, 동의어 그룹 관리, 그리고 동의어를 사용해 자동으로 쿼리를 확장하는 검색 실행까지 알아야 할 모든 내용을 단계별로 안내합니다. CMS, 전자상거래 카탈로그, 법률 문서 저장소 등 어떤 시스템을 구축하든 동의어 지원을 추가하면 관련성 및 전환율을 크게 높일 수 있습니다.
빠른 답변
- 동의어를 추가하기 위한 기본 단계는?
Index를 초기화하고SynonymDictionaryAPI를 사용합니다. - 동의어 사전을 가져올 수 있나요? 예 –
importDictionary(path)를 사용해 미리 만든 파일을 로드합니다. - 동의어 검색을 어떻게 활성화하나요?
SearchOptions.setUseSynonymSearch(true)를 설정합니다. - 동의어 그룹을 관리할 수 있나요? 물론입니다 – 사전 API를 통해 그룹을 삭제, 추가 또는 조회할 수 있습니다.
- 검색 인덱스를 최적화할 때 고려해야 할 점은? 사용되지 않는 항목을 정기적으로 정리하고 대용량 데이터셋에 맞게 JVM 힙을 조정합니다.
동의어 검색이란?
“동의어 검색”은 엔진이 일련의 단어 또는 구문을 서로 교환 가능한 것으로 취급한다는 의미입니다. 사용자가 **“better”**를 입력하면 엔진은 “improve”, “enhance” 또는 동일한 동의어 그룹에 정의된 다른 용어도 함께 검색하여, 사용자의 쿼리를 변경하지 않고도 풍부한 결과를 제공합니다.
GroupDocs.Search에서 동의어 지원을 활성화해야 하는 이유
- 향상된 사용자 경험: 방문자는 다른 용어를 사용하더라도 관련 문서를 찾을 수 있습니다.
- 높은 전환율: 전자상거래 플랫폼은 다양한 제품 용어를 매칭함으로써 매출을 더 많이 확보합니다.
- 간소화된 유지보수: 하나의 중앙 사전으로 여러 애플리케이션을 지원하므로 업데이트가 간편합니다.
사전 요구 사항
- GroupDocs.Search for Java 버전 25.4 이상.
- Maven을 지원하는 Java IDE(IntelliJ IDEA, Eclipse 등).
- 기본적인 Java 지식 및 Maven 프로젝트 구조에 대한 이해.
필요 라이브러리 및 버전
- GroupDocs.Search for Java 버전 25.4 이상.
환경 설정
- 선택한 IDE(IntelliJ IDEA, Eclipse 등).
- 의존성 관리를 위한 Maven.
지식 요구 사항
- Java 객체 지향 프로그래밍.
- 기본 파일 I/O 작업.
GroupDocs.Search for Java 설정
설치 정보
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에서 받을 수 있습니다.
라이선스 획득
- 무료 체험: 라이선스 없이 핵심 기능을 테스트합니다.
- 임시 라이선스: 평가 기간 동안 체험 기능을 확장합니다.
- 구매: 프로덕션 사용 및 전체 기능을 위해 필요합니다.
기본 초기화 및 설정
Index 인스턴스를 만든 뒤 검색 가능한 문서를 추가합니다:
import com.groupdocs.search.*;
String indexFolder = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/ManagingDictionaries/SynonymDictionary/Index";
String documentsFolder = "YOUR_DOCUMENT_DIRECTORY/DocumentsPath2";
// Creating an index in the specified folder
Index index = new Index(indexFolder);
// Adding documents from a specific folder to the index
index.add(documentsFolder);
검색 인덱스에 동의어 추가하기
인덱스 생성이 기본입니다. 아래에서는 필요한 단계와 정확한 코드를 함께 제공합니다.
기능 1: 인덱스 생성 및 색인
// Create an index in the specified folder
Index index = new Index(indexFolder);
// Add documents from the given folder to the index
index.add(documentsFolder);
기능 2: 단어에 대한 동의어 조회
String[] synonyms = index.getDictionaries().getSynonymDictionary().getSynonyms("make");
기능 3: 동의어 그룹 조회
String[][] synonymGroups = index.getDictionaries().getSynonymDictionary().getSynonymGroups("make");
기능 4: 동의어 사전 항목 관리
if (index.getDictionaries().getSynonymDictionary().getCount() > 0) {
index.getDictionaries().getSynonymDictionary().clear();
}
String[][] newSynonymGroups = new String[][]{
new String[] { "achieve", "accomplish", "attain", "reach" },
new String[] { "accept", "take", "have" },
new String[] { "improve", "better" }
};
index.getDictionaries().getSynonymDictionary().addRange(newSynonymGroups);
기능 5: 동의어를 파일로 내보내기
String exportFilePath = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/ManagingDictionaries/SynonymDictionary/Synonyms.dat";
index.getDictionaries().getSynonymDictionary().exportDictionary(exportFilePath);
기능 6: 파일에서 동의어 가져오기
index.getDictionaries().getSynonymDictionary().importDictionary(exportFilePath);
기능 7: 동의어 지원 검색 수행
String query = "better";
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true);
SearchResult result = index.search(query, options);
동의어를 사용한 검색 방법
setUseSynonymSearch(true)를 활성화하면 엔진이 자동으로 구축하거나 가져온 동의어 사전을 사용해 쿼리를 확장합니다. 이는 사용자의 검색 행동을 바꾸지 않으면서 더 풍부한 결과를 제공하는 핵심 단계입니다.
동의어 사전 가져오기
다른 환경에서 만든 .dat 파일이 이미 있다면 importDictionary(path)를 호출하면 됩니다. 이는 개발, 스테이징, 프로덕션 서버 간 사전을 동기화할 때 이상적입니다.
동의어 그룹 관리
동의어 그룹은 여러 용어를 하나의 논리적 엔터티로 취급하게 해줍니다. 그룹 추가, 삭제, 조회는 위 코드 스니펫에 나온 SynonymDictionary API를 통해 수행합니다.
검색 인덱스 최적화 방법
- 사용되지 않는 항목 정기 정리: 대량 업데이트 전
clear()를 사용합니다. - JVM 힙 조정: 대형 사전은 더 많은 메모리를 필요로 할 수 있습니다.
- 라이브러리 최신 상태 유지: 새 릴리스에는 성능 개선이 포함됩니다.
실용적인 적용 사례
- 콘텐츠 관리 시스템(CMS): 사용자가 다른 용어를 사용해도 기사 검색이 가능합니다.
- 전자상거래 플랫폼: “laptop”과 “notebook” 같은 동의어에 관대해집니다.
- 문서 저장소: 법률·의료 아카이브가 도메인별 동의어 그룹으로 혜택을 봅니다.
성능 고려 사항
- 인덱스 저장소 최적화: 오래된 데이터를 제거하기 위해 주기적으로 인덱스를 재구성합니다.
- 메모리 사용 관리: 대용량 동의어 파일 로드 시 힙 사용량을 모니터링합니다.
- 정기 업데이트: 버그 수정 및 속도 향상을 위해 최신 GroupDocs.Search 버전을 유지합니다.
일반적인 문제와 해결책
| 문제 | 가능 원인 | 해결 방법 |
|---|---|---|
| 동의어 매치가 나타나지 않음 | setUseSynonymSearch(true) 미설정 또는 사전 미가져오기 | 옵션이 활성화되어 있는지, 사전 파일이 존재하는지 확인 |
| 가져오기 중 메모리 부족 오류 | 매우 큰 .dat 파일이 JVM 힙을 초과 | -Xmx 힙 크기를 늘리거나 작은 배치로 나누어 가져오기 |
| 결과에 중복 항목이 나타남 | 동일 용어가 여러 동의어 그룹에 포함 | clear() 후 addRange()로 겹치는 그룹을 통합 |
자주 묻는 질문
Q: GroupDocs.Search를 사용하기 위한 최소 시스템 요구 사항은?
A: 호환 가능한 JDK(Java 8 이상)가 설치된 최신 OS면 충분합니다.
Q: 동의어 사전은 얼마나 자주 갱신해야 하나요?
A: 새로운 용어가 등장할 때마다 업데이트합니다. 깨끗한 갱신을 위해 clear() 후 addRange()를 사용하세요.
Q: 라이선스를 구매하지 않고 GroupDocs.Search를 실행할 수 있나요?
A: 무료 체험은 평가용으로 가능하지만, 프로덕션 배포에는 라이선스가 필요합니다.
Q: 대용량 데이터 세트를 색인할 때 권장 방법은?
A: 데이터를 논리적 배치로 나누고 힙 사용량을 모니터링하며 정기적인 인덱스 유지보수를 스케줄링합니다.
Q: 기대한 동의어 매치가 보이지 않는데, 무엇을 확인해야 하나요?
A: 사전이 올바르게 가져와졌는지, setUseSynonymSearch(true)가 활성화됐는지, 용어가 동의어 그룹에 포함돼 있는지 확인합니다.
Resources
- Documentation
- API Reference
- Download GroupDocs.Search for Java
- GitHub Repository
- Free Support Forum
- Temporary License Acquisition
마지막 업데이트: 2026-03-04
테스트 환경: GroupDocs.Search 25.4 for Java
작성자: GroupDocs