Java를 사용한 퍼지 검색

퍼지 검색은 데이터에서 완전히 동일하지는 않지만 유사한 콘텐츠를 찾는 데 도움이 됩니다. 오타, 철자 오류 또는 데이터 변형이 거의 없을 때 매우 유용합니다. 이 기사는 퍼지 검색을 수행하여 폴더에 흩어져 있는 파일을 찾는 Java 방식에 관한 것입니다.

퍼지 검색 샘플 콘텐츠를 자세히 설명하는 몇 가지 예는 다음과 같습니다.

  • 문서에서 “color” 또는 “color” 철자를 사용하는지 확실하지 않을 수 있습니다.
  • “John"을 검색하면 실제로 “Jon” 또는 “Jhon"으로 철자가 표시될 수 있습니다.
  • 누군가 “USA"를 입력해도 “USA"를 찾으려고 합니다.
  • 만약 당신이 “실수"를 한다면, 아 잠깐, 사실 그것은 “실수"입니다.

이러한 콘텐츠를 찾는 솔루션이 퍼지 검색(Fuzzy Search)입니다.

Java 퍼지 검색 라이브러리

Java에서 퍼지 검색을 수행하기 위해 GroupDocs.Search for Java API를 사용합니다. API는 유연성을 보여줄 수 있는 능력이 뛰어나며 사용자 정의 가능한 수준의 오류 허용 범위를 제공합니다. 이 기능은 영국식, 미국식 영어, 오타 등 언어 변형을 처리할 때 유용합니다.

이 라이브러리를 사용하면 다양한 파일 형식 내에서 퍼지 검색을 수행할 수 있습니다. 지원은 Word 문서(DOC, DOCX), 스프레드시트(XLS, XLSX), 프레젠테이션(PPT, PPTX), PDF, 마크업 언어(HTML, XML), 마크다운(MD), eBook(EPUB, CHM, FB2), 이메일(MSG, EML), OneNote 노트, 심지어 ZIP 아카이브까지.

이 마법이 처리할 수 있는 모든 파일 형식을 알고 싶다면 문서를 살펴보세요.

시작하려면 다운로드 섹션에서 API를 가져오거나 최신 저장소 및 종속성 Maven 구성을 Java 애플리케이션에 직접 추가하면 됩니다.

Java를 사용하여 파일에서 퍼지 검색을 해보자

Java를 사용하여 폴더 내에서 다양한 파일 형식의 여러 파일에 대해 퍼지 검색을 수행하려면 다음 단계를 따르세요.

  1. 파일이 있는 폴더를 사용하여 색인을 만드는 것부터 시작하세요.
  2. 색인에 기본 폴더 경로를 추가합니다.
  3. 검색하려는 검색어를 입력하세요.
  4. 퍼지 검색의 마법을 켜면 작은 실수도 이해할 수 있습니다.
  5. 퍼지 알고리즘의 유사성 수준을 설정합니다.
  6. 검색 방법을 사용하여 검색을 실행하면 검색 결과를 얻을 수 있습니다.
  7. 이제 SearchResults를 탐색하여 원하는 대로 출력을 생성하거나 인쇄할 수 있습니다.

아래 Java 코드에서 프로그램은 모든 파일 및 하위 폴더에서 사용자가 요청한 것과 유사한 콘텐츠를 찾습니다. 철자 오류(최대 25% 오류)를 허용합니다. 코드를 보면 유사성 수준이 0.75로 설정되어 있는 것을 볼 수 있는데, 이는 75% 일치에 해당합니다. 검색을 세부적으로 조정하려면 코드에서 유사성 수준을 변경하면 됩니다.

// 퍼지 Java를 사용하여 여러 폴더에서 여러 파일 검색

// 인덱스 폴더를 생성하고 여기에 문서 폴더 추가
Index index = new Index("path/indexing-folder-path");
index.add("path/parent-folder");

SearchOptions options = new SearchOptions();
options.getFuzzySearch().setEnabled(true); // Enabling the fuzzy search
options.getFuzzySearch().setFuzzyAlgorithm(new SimilarityLevel(0.75));

String query = "nulla"; // search approximate matches of the provided query  
SearchResult result = index.search(query, options);

코드를 실행하면 가져온 퍼지 검색 결과 목록이 표시됩니다. 검색 결과를 인쇄하는 방법을 보려면 이 문서를 계속 읽으세요.

Query: nulla
 Documents: 2
 Occurrences: 135

     Document: Lorem ipsum.docx
     Occurrences: 132
         Field: content
         Occurrences: 132
             nulla               98
             nullam              34

     Document: EnglishText.txt
     Occurrences: 3
         Field: content
         Occurrences: 3
             dull                1
             full                1
             fully               1

검색결과 인쇄

다음 Java 코드는 검색 결과를 표시하는 두 가지 방법을 제공합니다.

  • 대략적인 일치 항목을 모두 강조 표시합니다.
  • 읽기 및 분석 가능한 형식으로 결과를 인쇄합니다.
// Java를 사용하여 모든 문서에 대한 검색 결과를 강조 표시하고 인쇄합니다.
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
    FoundDocument document = result.getFoundDocument(i);
  
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "path/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.highlight(document, highlighter);
 
    System.out.println("\tDocument: " + document.getDocumentInfo().getFilePath());
    System.out.println("\tOccurrences: " + document.getOccurrenceCount());
    for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\t\tField: " + field.getFieldName());
        System.out.println("\t\tOccurrences: " + field.getOccurrenceCount());

        // 찾은 용어 인쇄
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
            }
        }
    }
}

무료 라이센스 또는 무료 평가판 받기

무료 라이센스

이 라이브러리를 제약 없이 무료로 탐색하려면 임시 라이센스를 획득하세요.

무료 시험판

다운로드 섹션에서 무료 평가판을 다운로드할 수 있습니다.

파일 및 폴더 내 검색을 위한 Java API

결론

이 기사에서는 퍼지 검색을 수행하는 프로그래밍 방식의 Java 방식을 살펴보았습니다. 작은 실수가 있더라도 비슷한 종류의 대략적인 일치 단어를 찾는 데 도움이 됩니다. 이 기능은 영국식 영어와 미국식 영어의 차이, 오타, 이름 변경, 단어의 유사한 소리를 처리하는 데 유용합니다.

API에 대한 자세한 내용은 문서를 확인하세요.

질문이 있거나 더 자세히 논의하고 싶다면 포럼으로 이동하세요.


또한보십시오