전체 텍스트 검색은 문서 모음 내에서 텍스트/쿼리를 검색하는 방법입니다. 이 접근 방식은 용어/구의 모든 인스턴스를 빠르게 찾고 텍스트 인덱스를 사용하여 작동합니다. 이 기사에서는 Java를 사용하여 문서에서 전체 텍스트를 프로그래밍 방식으로 검색하는 방법을 배웁니다.

그런 다음 다양한 검색 기술을 구현하고 워드 프로세서 문서, 스프레드시트, 프레젠테이션, HTML 파일, PDF 파일, eBook, 이메일 메시지, ZIP 아카이브 및 기타 여러 문서 형식에 대한 검색 솔루션을 구축할 수 있습니다.
다음 주제는 아래에서 다룹니다.
전체 텍스트 검색을 위한 Java API
GroupDocs.Search는 타사 도구 및 소프트웨어 종속성 없이 모든 애플리케이션에 통합할 수 있는 전체 텍스트 검색 Java API를 제공합니다. 이를 통해 많은 문서 형식 목록을 검색할 수 있습니다. API를 사용하여 수행할 수 있는 몇 가지 검색 기술은 다음과 같습니다.
- 대소문자 구분 검색
- 정규식 검색
- 패싯 검색
- 퍼지 검색
- 동음이의어 검색
- 동의어 검색
다운로드 또는 구성
다운로드 섹션에서 JAR 파일을 다운로드하거나 maven 기반 Java 애플리케이션의 pom.xml에 대한 최신 저장소 및 종속성 구성을 얻을 수 있습니다.
<repository>
<id>GroupDocsJavaAPI</id>
<name>GroupDocs Java API</name>
<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>21.3</version>
</dependency>
Java를 사용한 전체 텍스트 검색
폴더에 저장된 파일 내에서 검색을 수행하는 두 단계가 있습니다.
- 인덱싱
- 검색 수행
Java를 사용한 색인 파일
색인에는 모든 문서의 스캔된 텍스트가 있습니다. 따라서 검색 작업을 수행할 때 원본 문서의 텍스트가 아닌 인덱스만 참조합니다. 파일 형식이 같거나 다른 수천 개의 문서를 즉시 검색할 수 있도록 하려면 색인을 만들고 이러한 문서를 색인에 추가해야 합니다. 문서가 색인화되면 색인은 검색 쿼리를 처리할 준비가 됩니다.
다음의 간단한 두 줄은 색인을 만들고 문서 폴더도 색인에 추가합니다.
Index index = new Index("indexingFolderPath");
index.add("documentsFolderPath");
Java에서 검색 수행
(Word, PDF, Excel 및 HTML)과 같은 동일하거나 다른 형식의 여러 문서를 인덱싱한 후 특정 검색 쿼리(검색어 “Draw”)를 처리하도록 진행할 수 있습니다. 다음은 Java를 사용하여 폴더 내의 여러 문서에서 텍스트 검색을 수행하는 방법에 대한 단계입니다.
- 문서의 원본 폴더와 인덱스 폴더를 지정합니다.
- 인덱스 폴더를 이용하여 색인을 생성합니다.
- 인덱스에 소스 폴더를 추가합니다.
- 쿼리 문자열을 준비합니다.
- Index 클래스의 search 메소드를 이용하여 검색한다.
- 각 문서의 속성에 대한 각 검색 결과를 트래버스합니다.
다음 소스 코드는 제공된 폴더의 모든 문서에 대해 Java로 텍스트 검색을 수행합니다.
// Java를 사용하여 폴더 내에서 여러 PDF, Word, Excel, HTML 문서에서 지정된 텍스트 검색
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath");
// 지정된 텍스트에 대한 인덱스 검색
SearchResult result = index.search("Draw");
for (int i = 0; i < result.getDocumentCount(); i++) {
FoundDocument document = result.getFoundDocument(i);
System.out.println("Document Path: " + document.getDocumentInfo().getFilePath());
System.out.println("Occurrence : " + document.getOccurrenceCount());
}
지정된 폴더가 있는 모든 문서에서 문서 경로와 검색어의 발생 횟수를 가져옵니다. 다음은 시각화를 위한 스크린샷입니다.

Java에서 텍스트 검색 결과 강조 표시
이제 동일한 전체 텍스트 검색을 수행하고 쿼리와 일치하는 모든 항목을 강조 표시해 보겠습니다.
다음 단계는 텍스트 검색 결과를 강조 표시하는 방법을 보여줍니다.
- 색인을 생성하고 문서 폴더를 색인에 추가합니다.
- 쿼리 문자열을 준비합니다.
- 검색 방식으로 문서 폴더를 검색합니다.
- 결과를 탐색하면서 HtmlHighlighter를 사용하여 형광펜을 만듭니다.
- 강조 방법을 사용하여 검색 결과를 강조 표시합니다.
다음 코드는 Java를 사용하여 강조 표시된 검색 결과와 함께 HTML 출력을 생성합니다.
// Java의 폴더에 있는 여러 문서의 전체 텍스트 검색 결과 강조 표시
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath"); // Synchronous indexing documents from the specified folder
String query = "draw"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index
for (int i = 0; i < result.getDocumentCount(); i++)
{
FoundDocument document = result.getFoundDocument(i);
String path = "path/Highlighted-"+ i +".html";
OutputAdapter outputAdapter = new FileOutputAdapter(path);
HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the highlighter
index.highlight(document, highlighter); // Generates HTML formatted output document with highlighted search results
}
출력으로 여러 HTML 파일을 얻습니다. 각 파일은 강조 표시된 검색어/단어와 함께 별도의 문서(예: excel.xlsx, source.docx, target.docx)의 내용을 표시합니다. 아래는 위의 코드를 사용하여 얻은 DOCX 파일, TXT 파일 및 PDF 파일의 강조 표시된 HTML 출력입니다.

무료 API 라이선스 받기
평가 제한 없이 API를 사용하기 위해 임시 무료 라이선스 받기를 할 수 있습니다.
결론
이 기사에서는 Java에서 폴더의 여러 문서 내에서 텍스트를 검색하는 방법을 배웠습니다. 또한 GroupDocs.Search for Java를 사용하여 MS Word 파일, TXT 파일 및 PDF 파일에 대한 HTML 형식의 검색 결과 텍스트를 프로그래밍 방식으로 강조 표시하는 방법에 대해 논의했습니다.
문서를 사용하여 API에 대해 자세히 알아볼 수 있습니다. GitHub에서 더 많은 예제를 사용할 수 있습니다. 문의 사항은 포럼을 통해 문의해 주십시오.