模糊搜尋可協助您尋找資料中相似但不完全相同的內容。當資料中存在少量拼字錯誤、拼字錯誤或變更時,它非常方便。本文主要介紹 Java 方法來執行模糊搜尋以尋找分散在資料夾中的檔案。
以下舉幾個例子來詳細說明模糊搜尋範例內容:
- 您可能不確定文件是否使用拼字“color”或“color”。
- 當查找“John”時,它實際上可以拼寫為“Jon”或“Jhon”。
- 即使有人輸入“USA”也試圖找出“USA”
- 如果你犯了一個“錯誤”,哦等等,這實際上是一個“錯誤”。
尋找此類內容的解決方案是模糊搜尋。
Java模糊搜尋庫
為了在 Java 中進行模糊搜索,我們將使用 GroupDocs.Search for Java API。該 API 具有很強的靈活性,並提供可自訂的容錯程度。在處理英式英語和美式英語等語言變體以及拼字錯誤時,此功能非常有用。
透過該庫,可以在多種文件格式中執行模糊搜尋。支援不僅限於 Word 文件(DOC、DOCX)、電子表格(XLS、XLSX)、簡報(PPT、PPTX)、PDF、標記語言(HTML、XML)、Markdown(MD)、電子書(EPUB、CHM、FB2 )、電子郵件(MSG、EML)、OneNote 筆記,甚至ZIP 檔案。
如果您想了解這個魔法可以處理的所有文件類型,只需查看文件。
首先,您可以從 下載部分 取得 API,或直接將 最新儲存庫和相依性 Maven 設定 新增至您的 Java 應用程式。
讓我們使用 Java 在檔案中進行模糊搜尋
請依照下列步驟使用 Java 對資料夾內各種檔案格式的多個檔案執行模糊搜尋:
- 首先使用檔案所在的資料夾建立 索引。
- 將主資料夾路徑新增至索引。
- 提供您要搜尋的搜尋查詢。
- 打開模糊搜尋的魔力,讓它理解小錯誤。
- 設定模糊演算法中的相似度。
- 使用search方法執行搜索,得到搜尋結果。
- 現在,您可以遍歷 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 的更多信息,請查看文檔。
如果您有疑問或想進行更多討論,請前往論壇。