آیا تا به حال به این فکر کرده‌اید که چگونه می‌توانید به طور یکپارچه در میان فایل‌های متعدد جستجو کنید، یا شاید پیچیدگی جستجوی درون فایل‌ها را در چندین پوشه پیمایش کنید؟ تمام سوالات شما پاسخ را در اینجا پیدا می کند. این مقاله به قلمرو اسکن متن می پردازد و نحوه جستجوی متون یا عبارات متعدد را در فایل های مختلف در پوشه های مختلف با استفاده از Java نشان می دهد.

Java API برای اسکن متن در فایل ها و پوشه ها

امروز، از GroupDocs.Search for Java API برای جستجوی متون متعدد در فایل‌های با فرمت‌های فایل مختلف در پوشه‌ها استفاده می‌کنیم. این کتابخانه به ما امکان می‌دهد متن را در طیف وسیعی از فرمت‌های فایل برای اسناد Word، صفحات گسترده، ارائه‌ها، فایل‌های PDF، فایل‌های نشانه‌گذاری، کتاب‌های الکترونیکی، پیام‌های ایمیل، اسناد One Note و بایگانی ZIP اسکن کنیم. اسناد لیست مفصلی از فرمت‌های فایل پشتیبانی شده را ارائه می‌دهد.

می‌توانید فایل JAR را از بخش دانلودها دانلود کنید یا از آخرین مخزن و پیکربندی‌های وابستگی Maven در برنامه‌های Java خود استفاده کنید.

جستجوی متون متعدد در فایل ها در پوشه ها با استفاده از جاوا

مراحل زیر را برای انجام جستجوی متن در چندین فایل در چندین پوشه با استفاده از Java و ایجاد فایل های خروجی HTML برجسته برای هر سند یافت شده دنبال کنید.

  • یک شی Index با مسیر پوشه فهرست مشخص شده ایجاد کنید.
  • پوشه سند والد را با استفاده از روش افزودن ایندکس کنید.
  • یک عبارت جستجو را با چند عبارت یا عبارت تعریف کنید.
  • اسکن متن را با استفاده از روش جستجو اجرا کنید و نتایج را ذخیره کنید.
  • در نتایج جستجو تکرار کنید:
    • با استفاده از روش getFoundDocument به هر سند یافت شده دسترسی پیدا کنید.
    • دسترسی یا چاپ هر گونه اطلاعات فایل برای سند یافت شده.
    • یک OutputAdapter را برای قالب و مسیر دلخواه تنظیم کنید.
    • یک Highlighter برای سند ایجاد کنید.
    • نتایج جستجو را با استفاده از روش هایلایت در یک فایل HTML برجسته و خروجی کنید.
// جستجوی متن در چندین فایل با فرمت های مختلف فایل در پوشه های متعدد با استفاده از جاوا

// ایجاد نمایه در پوشه مشخص شده
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 وجود دارد که به طور جمعی رشته های متنی و عبارات را در چندین فایل و پوشه جستجو می کند:

// جستجوی متن در چندین فایل با فرمت های مختلف فایل در پوشه های متعدد با استفاده از جاوا

// ایجاد نمایه در پوشه مشخص شده
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، خوانندگان تشویق می شوند به اسناد مراجعه کنند. سوالات و بحث های بیشتر را می توان به تالار گفتمان ارائه شده هدایت کرد.

همچنین ببینید