Нещодавно ми обговорювали як отримати всі синоніми будь-якого слова. Було б чудово, якби ми змогли знайти ці синоніми в багатьох різних документах. У цій статті ми побачимо, як шукати будь-яке слово та його синоніми в кількох файлах за допомогою 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:

// Шукайте синоніми в багатьох файлах і папках за допомогою 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

// Шукайте слово "make"
// Окрім слова «зробити», шукатимуть також синоніми «зробити, отримати, мати, ...».
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 

З результатів пошуку, отриманих на описаному вище кроці, ви можете отримати інформацію щодо кожного слова та синоніма пошуку. У наступних кроках детально представлено результати після отримання всіх синонімів і їх кількості в кожному документі:

  • Спочатку виконайте пошук, щоб отримати Результат пошуку.
  • Перегляньте результат пошуку, щоб працювати з кожним FoundDocument.
  • Надрукуйте відповідні властивості кожного FoundDocument.
  • Тепер витягніть і перегляньте FoundDocumentField у кожному FoundDocument.
  • Кожне FoundDocumentField має свої терміни, входження та інші властивості. Використовуйте відповідний геттер.

У наступному вихідному коді відображається результат пошуку синонімів разом із кількістю входжень кожного шуканого терміна в Java.

// Друк результатів пошуку синонімів у 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.

// Шукайте синоніми в багатьох файлах і папках за допомогою 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

// Шукайте слово "make"
// Окрім слова «зробити», шукатимуть також синоніми «зробити, отримати, мати, ...».
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. Не соромтеся звертатися до нас із будь-яким запитом через форум.

Дивись також