ما اخیراً در مورد [چگونه تمام مترادف های هر کلمه را بدست آوریم] بحث کرده ایم2. اگر بتوانیم این مترادف ها را در اسناد مختلف پیدا کنیم، فوق العاده خواهد بود. در این مقاله نحوه جستجوی هر کلمه و مترادف آن را در چندین فایل با استفاده از Java خواهیم دید.

موضوعات زیر به شرح زیر است:

Java API - جستجوی مترادف ها در چندین فایل

GroupDocs.Search Java API GroupDocs.Search for Java) را به نمایش می گذارد. این امکان جستجوی کلمات و مترادف آنها را در چندین فایل مختلف پوشه مشخص شده فراهم می کند. از لیست طولانی فرمت های مختلف فایل پشتیبانی می کند و تکنیک‌های مختلف جستجو برخی از این ویژگی‌ها در زیر ذکر شده‌اند و می‌توانید از آن‌ها در ترکیب برای رسیدن به هدف خود استفاده کنید:

  • جستجوی بولی
  • جستجوی حساس به حروف کوچک و بزرگ
  • نتایج جستجو را برجسته کنید
  • جستجوی هموفون
  • جستجوی عبارت
  • جستجوی عبارات منظم
  • جستجو بر اساس قطعات
  • جستجوی مترادف

دانلود یا پیکربندی کنید

می‌توانید فایل JAR را از بخش دانلودها دانلود کنید، یا فقط آخرین پیکربندی‌های مخزن و وابستگی را برای pom.xml برنامه‌های Java مبتنی بر maven خود دریافت کنید.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>21.8</version> 
</dependency>

پیدا کردن مترادف در چندین فایل با استفاده از Java

بیایید به سرعت به جستجوی مترادف ها در فایل ها برویم. مراحل زیر نحوه جستجوی مترادف ها (کلمات با معانی مشابه) را در فایل های داخل یک پوشه با استفاده از Java نشان می دهد:

  • پوشه فهرست، پوشه سند و پرس و جو (کلمه مورد جستجو) را تعریف کنید.
  • با استفاده از کلاس Index یک فهرست با استفاده از پوشه فهرست تعریف شده ایجاد کنید.
  • پوشه اسناد را به فهرست اضافه کنید.
  • جستجوی مترادف را با استفاده از SearchOptions فعال کنید.
  • متد search کلاس Index را فراخوانی کنید و پرس و جو را با گزینه های جستجو ارسال کنید.
  • خلاصه را با استفاده از خصوصیات کلاس SearchResult بازیابی شده چاپ کنید.

کد منبع زیر نحوه یافتن تمام مترادف های درون فایل ها را با استفاده از Java نشان می دهد:

// جستجوی مترادف در چندین فایل و پوشه با استفاده از جاوا
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// ایجاد نمایه در پوشه مشخص شده
Index index = new Index(indexFolder);
index.add(documentsFolder);

// ایجاد یک شی گزینه های جستجو
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// جستجوی کلمه "ساخت"
// علاوه بر کلمه "ساختن"، مترادف های "انجام، بدست آوردن، داشتن، ..." نیز جستجو خواهند شد.
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

خروجی کد بالا به صورت زیر است:

Query: **make**
Documents: 3
Word & Synonym Occurrences: 44 

از نتایج جستجوی به دست آمده در مرحله بالا می توانید اطلاعات مربوط به هر کلمه و مترادف جستجو را بدست آورید. مراحل زیر نتایج را به تفصیل پس از دریافت تمام مترادف ها و تعداد وقوع آنها در هر سند ارائه می دهد:

  • ابتدا جستجو را انجام دهید تا SearchResult را دریافت کنید.
  • نتیجه جستجو را برای کار با هر FoundDocument برگردانید.
  • ویژگی های مشابه هر FoundDocument را چاپ کنید.
  • اکنون، FoundDocumentField را در هر FoundDocument استخراج کرده و سپس پیمایش کنید.
  • هر FoundDocumentField اصطلاحات، رخدادها و سایر خصوصیات خود را در خود دارد. از گیرنده مربوطه استفاده کنید.

کد منبع زیر نتیجه جستجوی مترادف را به همراه تعداد تکرار هر عبارت جستجو شده در Java نمایش می دهد.

// چاپ نتایج جستجوی مترادف در جاوا
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("Document: " + document.getDocumentInfo().getFilePath());
    System.out.println("Occurrences: " + document.getOccurrenceCount());

  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // چاپ اصطلاحات یافت شده
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
            }
        }
    }
}

خروجی کد بالا به صورت زیر است:

Query: **make**
Documents: 2
Total occurrences: 22

Document: C:/documents/sample.docx
Occurrences: 13
    Field: content
    Occurrences: 13
        **make**  -  2
        **have**  -  1
        **get**  -  2
        **do**  -  8
- - - - - - - - - - - - - - - - 
Document: C:/documents/sample.txt
Occurrences: 11
    Field: content
    Occurrences: 11
        **make**  -  1
        **have**  -  2
        **get**  -  1
        **do**  -  7
- - - - - - - - - - - - - - - - 
Document: C:/documents/sample.pdf
Occurrences: 20
    Field: content
    Occurrences: 20
        **make**  -  2
        **have**  -  2
        **get**  -  2
        **do**  -  14 

جستجوی مترادف ها و نتایج چاپ در Java – کد کامل

بیایید دو مرحله بالا را با هم ترکیب کنیم، بنابراین کد منبع کامل در اینجا آمده است. در مرحله اول، تمام مترادف ها را با توجه به پرس و جو ارائه شده پیدا می کند. سپس، تمام رخدادهای هر مترادف را در هر سند در Java چاپ می کند.

// جستجوی مترادف در چندین فایل و پوشه با استفاده از جاوا
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// ایجاد نمایه در پوشه مشخص شده
Index index = new Index(indexFolder);
index.add(documentsFolder);

// ایجاد یک شی گزینه های جستجو
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// جستجوی کلمه "ساخت"
// علاوه بر کلمه "ساختن"، مترادف های "انجام، بدست آوردن، داشتن، ..." نیز جستجو خواهند شد.
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("Document: " + document.getDocumentInfo().getFilePath());
    System.out.println("Occurrences: " + document.getOccurrenceCount());

  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // چاپ اصطلاحات یافت شده
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
            }
        }
    }
}

یک مجوز API رایگان دریافت کنید

برای استفاده از API بدون محدودیت ارزیابی، می توانید یک مجوز موقت رایگان دریافت کنید.

نتیجه

به طور خلاصه، ما در مورد چگونگی جستجوی هر کلمه همراه با مترادف آن در چندین سند با استفاده از Java بحث کردیم. مهمتر از همه، اکنون می توانید برنامه Java خود را برای جستجو درست مانند GroupDocs.Search App توسعه دهید.

درباره Java Search Automation API از مستندات بیشتر بیاموزید. برای تجربه ویژگی‌ها، نمونه‌هایی را از مخزن GitHub امتحان کنید. برای هرگونه سوالی از طریق [فروم 21 با ما تماس بگیرید.

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