수많은 파일을 원활하게 검색하는 방법이나 여러 폴더에 있는 파일 내에서 검색하는 복잡성을 탐색하는 방법이 궁금하신가요? 모든 질문에 대한 답변은 여기에서 찾을 수 있습니다. 이 기사에서는 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 출력 파일을 생성할 수 있습니다.

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 API

결론

이 기사에서는 Java를 사용하여 여러 폴더에 걸쳐 여러 파일에 있는 여러 텍스트를 검색하기 위한 텍스트 검색을 살펴보았습니다. 검색 쿼리부터 시작하여 여러 파일과 폴더 내에서 검색하고 각 HTML 파일에서 찾은 결과를 강조 표시했습니다.

자세한 API 정보를 보려면 독자가 문서를 참조하는 것이 좋습니다. 질문과 추가 토론은 제공된 포럼으로 이동할 수 있습니다.

또한보십시오