Přemýšleli jste někdy nad tím, jak plynule prohledávat mnoho souborů nebo se snad orientovat ve složitosti hledání v souborech ve více složkách? Zde najdete odpovědi na všechny vaše dotazy. Tento článek se ponoří do oblasti skenování textu a ukazuje, jak pomocí Javy vyhledávat více textů nebo frází v různých souborech rozmístěných v různých složkách.
Java API pro skenování textu napříč soubory a složkami
Dnes budeme používat GroupDocs.Search for Java API k vyhledávání více textů v souborech různých formátů souborů napříč složkami. Tato knihovna nám umožňuje programově skenovat text v široké škále formátů souborů pro dokumenty Word, tabulky, prezentace, soubory PDF, soubory značek, elektronické knihy, e-mailové zprávy, dokumenty One Note a archivy ZIP. Dokumentace poskytuje podrobný seznam podporovaných formátů souborů.
Soubor JAR si můžete stáhnout z části ke stažení nebo použít nejnovější konfigurace úložiště a závislostí Maven ve vašich aplikacích Java.
Vyhledávání více textů v souborech napříč složkami pomocí Java
Chcete-li pomocí jazyka Java provést textové vyhledávání ve více souborech ve více složkách a vygenerovat zvýrazněné výstupní soubory HTML pro každý nalezený dokument, postupujte podle následujících kroků.
- Vytvořte objekt Index se zadanou cestou složky indexu.
- Indexujte nadřazenou složku dokumentů pomocí metody add.
- Definujte vyhledávací dotaz s více termíny nebo frázemi.
- Proveďte skenování textu pomocí vyhledávací metody a uložte výsledky.
- Iterujte výsledky vyhledávání:
- Ke každému nalezenému dokumentu přistupujte pomocí metody getFoundDocument.
- Otevřete nebo vytiskněte informace o souboru nalezeného dokumentu.
- Nastavte OutputAdapter pro požadovaný formát a cestu.
- Vytvořte Zvýrazňovač pro dokument.
- Zvýrazněte a vytiskněte výsledky hledání do souboru HTML pomocí metody zvýraznění.
// Hledání textu ve více souborech různých formátů souborů v rámci více složek pomocí Java
// Vytvoření indexu v zadané složce
Index index = new Index("path/for/indexingFolder");
// Indexování dokumentů ze zadané složky
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);
}
Výše uvedený kód společně umožňuje vyhledávat konkrétní texty ve více souborech a generovat zvýrazněné výstupní soubory HTML pro každý nalezený dokument.
Tisk výsledků hledání textu
Z výsledku vyhledávacího dotazu můžete dále extrahovat informace o nalezených dokumentech.
// Tisk výsledků hledání ===
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
FoundDocument document = result.getFoundDocument(i);
// Tisk výsledků hledání ===========
System.out.println("Occurrences: " + document.getOccurrenceCount());
for (FoundDocumentField field : document.getFoundFields()) {
System.out.println("\tField: " + field.getFieldName());
System.out.println("\tOccurrences: " + field.getOccurrenceCount());
// Tisk nalezených termínů
if (field.getTerms() != null) {
for (int k = 0; k < field.getTerms().length; k++) {
System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
}
}
// Tisk nalezených frází
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]);
}
}
}
}
Následující výstup bude výstupem tisku výše uvedených výsledků vyhledávání získaných ze souborů DOCX, PDF a 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
Kompletní kód
Zde je úplný kód Java, který společně prohledává textové řetězce a fráze ve více souborech a složkách:
// Hledání textu ve více souborech různých formátů souborů v rámci více složek pomocí Java
// Vytvoření indexu v zadané složce
Index index = new Index("path/for/indexingFolder");
// Indexování dokumentů ze zadané složky
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);
// Tisk výsledků hledání ============
System.out.println("Occurrences: " + document.getOccurrenceCount());
for (FoundDocumentField field : document.getFoundFields()) {
System.out.println("\tField: " + field.getFieldName());
System.out.println("\tOccurrences: " + field.getOccurrenceCount());
// Tisk nalezených termínů
if (field.getTerms() != null) {
for (int k = 0; k < field.getTerms().length; k++) {
System.out.println("\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
}
}
// Tisk nalezených frází
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]);
}
}
}
}
Získání bezplatné licence nebo bezplatné zkušební verze
Bezplatná licence
Chcete-li prozkoumat tuto knihovnu bez omezení, můžete získat dočasnou licenci zdarma.
Zkušební verze zdarma
Stáhněte si bezplatnou zkušební verzi ze sekce ke stažení.
Závěr
V tomto článku jsme právě prozkoumali skenování textu pro vyhledávání více textů ve více souborech ve více složkách pomocí Java. Počínaje vyhledávacím dotazem jsme hledali ve více souborech a složkách a zvýraznili nalezené výsledky v příslušných souborech HTML.
Pro podrobné informace o API se čtenářům doporučuje nahlédnout do dokumentace. Dotazy a další diskuse můžete směřovat na poskytnuté fórum.