퍼지 검색은 데이터에서 완전히 동일하지는 않지만 유사한 콘텐츠를 찾는 데 도움이 됩니다. 오타, 철자 오류 또는 데이터 변형이 거의 없을 때 매우 유용합니다. 이 기사는 퍼지 검색을 수행하여 폴더에 흩어져 있는 파일을 찾는 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를 사용하여 폴더 내에서 다양한 파일 형식의 여러 파일에 대해 퍼지 검색을 수행하려면 다음 단계를 따르세요.
- 파일이 있는 폴더를 사용하여 색인을 만드는 것부터 시작하세요.
- 색인에 기본 폴더 경로를 추가합니다.
- 검색하려는 검색어를 입력하세요.
- 퍼지 검색의 마법을 켜면 작은 실수도 이해할 수 있습니다.
- 퍼지 알고리즘의 유사성 수준을 설정합니다.
- 검색 방법을 사용하여 검색을 실행하면 검색 결과를 얻을 수 있습니다.
- 이제 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에 대한 자세한 내용은 문서를 확인하세요.
질문이 있거나 더 자세히 논의하고 싶다면 포럼으로 이동하세요.