수많은 파일을 원활하게 검색하는 방법이나 여러 폴더에 있는 파일 내에서 검색하는 복잡성을 탐색하는 방법이 궁금하신가요? 모든 질문에 대한 답변은 여기에서 찾을 수 있습니다. 이 기사에서는 Java를 사용하여 다양한 폴더에 분산된 다양한 파일에서 여러 텍스트나 구문을 검색하는 방법을 보여주면서 텍스트 검색 영역을 자세히 설명합니다.
파일 및 폴더 전체에서 텍스트를 검색하기 위한 Java API
오늘은 GroupDocs.Search for Java API를 사용하여 여러 폴더에 걸쳐 다양한 파일 형식의 파일 내 여러 텍스트를 검색해 보겠습니다. 이 라이브러리를 사용하면 Word 문서, 스프레드시트, 프레젠테이션, PDF 파일, 마크업 파일, eBook, 이메일 메시지, One Note 문서 및 ZIP 아카이브에 대한 광범위한 파일 형식 내에서 텍스트를 프로그래밍 방식으로 스캔할 수 있습니다. 문서에서는 지원되는 파일 형식의 세부 목록을 제공합니다.
다운로드 섹션에서 JAR 파일을 다운로드하거나 Java 애플리케이션 내에서 최신 저장소 및 종속성 Maven 구성을 사용할 수 있습니다.
Java를 사용하여 폴더 전체의 파일에서 여러 텍스트 검색
Java를 사용하여 여러 폴더 내의 여러 파일에서 텍스트 검색을 수행하고 발견된 각 문서에 대해 강조 표시된 HTML 출력 파일을 생성하려면 다음 단계를 따르십시오.
- 지정된 인덱스 폴더 경로를 사용하여 Index 개체를 만듭니다.
- add 메소드를 사용하여 상위 문서 폴더를 색인화합니다.
- 여러 용어나 구문으로 검색어를 정의하세요.
- 검색 방법을 사용하여 텍스트 스캔을 실행하고 결과를 저장합니다.
- 검색 결과를 반복합니다.
- getFoundDocument 메소드를 사용하여 발견된 각 문서에 액세스하십시오.
- 발견된 문서에 대한 파일 정보에 액세스하거나 인쇄합니다.
- 원하는 형식과 경로에 대해 OutputAdapter를 설정합니다.
- 문서에 대한 형광펜을 만듭니다.
- highlight 메서드를 사용하여 검색 결과를 강조 표시하고 HTML 파일로 출력합니다.
// Java를 사용하여 여러 폴더 내에서 다양한 파일 형식의 여러 파일에서 텍스트 검색
// 지정된 폴더에 인덱스 생성
Index index = new Index("path/for/indexingFolder");
// 지정된 폴더의 문서 색인화
index.add("path/parent-folder/");
String query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.search(query);
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
FoundDocument document = result.getFoundDocument(i);
System.out.println("====================================");
System.out.println("File Name: " + document.getDocumentInfo().getFilePath());
OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
Highlighter highlighter = new DocumentHighlighter(outputAdapter);
index.highlight(document, highlighter);
}
위의 코드를 사용하면 여러 파일 내에서 특정 텍스트를 검색하고 발견된 각 문서에 대해 강조 표시된 HTML 출력 파일을 생성할 수 있습니다.
텍스트 검색 결과 인쇄
검색어 결과에서 발견된 문서에 대한 정보를 추가로 추출할 수 있습니다.
// 검색 결과 인쇄 ===
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
FoundDocument document = result.getFoundDocument(i);
// 검색 결과 인쇄 ===========
System.out.println("Occurrences: " + document.getOccurrenceCount());
for (FoundDocumentField field : document.getFoundFields()) {
System.out.println("\tField: " + field.getFieldName());
System.out.println("\tOccurrences: " + field.getOccurrenceCount());
// 찾은 용어 인쇄
if (field.getTerms() != null) {
for (int k = 0; k < field.getTerms().length; k++) {
System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
}
}
// 찾은 문구 인쇄하기
if (field.getTermSequences() != null) {
for (int k = 0; k < field.getTermSequences().length; k++) {
String[] terms = field.getTermSequences()[k];
String sequence = "";
for (String term : terms) {
sequence += term + " ";
}
System.out.println("\t\t" + sequence + " - " + field.getTermSequencesOccurrences()[k]);
}
}
}
}
다음은 DOCX, PDF 및 TXT 파일에서 얻은 위 검색 결과를 인쇄한 결과입니다.
File Name: Lorem ipsum.docx
Occurrences: 101
Field: filename
Occurrences: 1
lorem ipsum - 1
Field: content
Occurrences: 100
non - 94
lorem ipsum - 6
====================================
File Name: Lorem ipsum.pdf
Occurrences: 60
Field: filename
Occurrences: 1
lorem ipsum - 1
Field: content
Occurrences: 59
non - 53
lorem ipsum - 6
====================================
File Name: English.txt
Occurrences: 39
Field: content
Occurrences: 39
water - 39
완전한 코드
다음은 여러 파일과 폴더에서 텍스트 문자열과 구문을 집합적으로 검색하는 전체 Java 코드입니다.
// Java를 사용하여 여러 폴더 내에서 다양한 파일 형식의 여러 파일에서 텍스트 검색
// 지정된 폴더에 인덱스 생성
Index index = new Index("path/for/indexingFolder");
// 지정된 폴더의 문서 색인화
index.add("path/parent-folder/");
String query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.search(query);
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
FoundDocument document = result.getFoundDocument(i);
System.out.println("====================================");
System.out.println("File Name: " + document.getDocumentInfo().getFilePath());
OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
Highlighter highlighter = new DocumentHighlighter(outputAdapter);
index.highlight(document, highlighter);
// 검색 결과 인쇄 ===========
System.out.println("Occurrences: " + document.getOccurrenceCount());
for (FoundDocumentField field : document.getFoundFields()) {
System.out.println("\tField: " + field.getFieldName());
System.out.println("\tOccurrences: " + field.getOccurrenceCount());
// 찾은 용어 인쇄
if (field.getTerms() != null) {
for (int k = 0; k < field.getTerms().length; k++) {
System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
}
}
// 찾은 문구 인쇄하기
if (field.getTermSequences() != null) {
for (int k = 0; k < field.getTermSequences().length; k++) {
String[] terms = field.getTermSequences()[k];
String sequence = "";
for (String term : terms) {
sequence += term + " ";
}
System.out.println("\t\t" + sequence + " - " + field.getTermSequencesOccurrences()[k]);
}
}
}
}
무료 라이센스 또는 무료 평가판 받기
무료 라이센스
제약 없이 이 라이브러리를 탐색하려면 무료 임시 라이센스를 얻을 수 있습니다.
무료 시험판
다운로드 섹션에서 무료 평가판을 다운로드하세요.
결론
이 기사에서는 Java를 사용하여 여러 폴더에 걸쳐 여러 파일에 있는 여러 텍스트를 검색하기 위한 텍스트 검색을 살펴보았습니다. 검색 쿼리부터 시작하여 여러 파일과 폴더 내에서 검색하고 각 HTML 파일에서 찾은 결과를 강조 표시했습니다.
자세한 API 정보를 보려면 독자가 문서를 참조하는 것이 좋습니다. 질문과 추가 토론은 제공된 포럼으로 이동할 수 있습니다.